approval: dangerous_header: "⚠️ COMANDO PERIGOSO: {description}" choose_long: " [o]uma vez | [s]sessão | [a]sempre | [d]negar" choose_short: " [o]uma vez | [s]sessão | [d]negar" prompt_long: " Escolha [o/s/a/D]: " prompt_short: " Escolha [o/s/D]: " choose_smart_deny: " [o]uma vez | [d]negar" prompt_smart_deny: " Escolha [o/D]: " smart_deny_once_inputs: "o,once,vez" smart_deny_deny_inputs: "d,deny,n,negar" timeout: " ⏱ Sem resposta em {waited} — o comando não foi executado. Peça novamente para tentar de novo, ou aumente o limite: hermes config set approvals.timeout {suggested}" allowed_once: " ✓ Permitido uma vez" allowed_session: " ✓ Permitido nesta sessão" allowed_always: " ✓ Adicionado à lista de permissões permanente" denied: " ✗ Negado" cancelled: " ✗ Cancelado" blocklist_message: "Este comando está na lista de bloqueio incondicional e não pode ser aprovado." inputs: approve: "approve,yes,ok,okay,confirm,y,aprovar,sim,confirmar,s" deny: "deny,no,reject,cancel,n,negar,não,nao,rejeitar,cancelar" always: "always,approve always,always approve,sempre,aprovar sempre,sempre aprovar" session: "session,approve session,session approve,sessão,sessao,aprovar sessão,aprovar sessao" confirm_once: "approve,approve once,once,yes,ok,confirm,aprovar,aprovar uma vez,uma vez,sim,confirmar" confirm_always: "always,always approve,remember,sempre,sempre aprovar,lembrar" confirm_cancel: "cancel,nevermind,no,deny,cancelar,esquece,não,nao,negar" summary: denied: "Você negou {noun} — nada foi executado." timeout: "Sem resposta em {window} — {noun} não rodou." notify_failed: "Não foi possível entregar o pedido de aprovação — {noun} não rodou." cancelled: "O pedido de aprovação foi retirado ou nunca chegou até você — {noun} não rodou." blocked: "Em uma sessão sem supervisão, {noun} não tem permissão — nada foi executado." default: "Sem execução: {noun} não rodou." noun: command: "este comando" code: "este código" action: "esta ação" window: hour_one: "{count} hora" hour_other: "{count} horas" minute_one: "{count} minuto" minute_other: "{count} minutos" second_one: "{count} segundo" second_other: "{count} segundos" gateway: approval_expired: "⚠️ A aprovação expirou (o agente já não está à espera). Peça ao agente para tentar novamente." draining: "⏳ A aguardar que {count} agente(s) ativo(s) terminem antes de reiniciar..." goal_cleared: "✓ Objetivo removido." no_active_goal: "Não há objetivo ativo." config_read_failed: "⚠️ Não foi possível ler config.yaml: {error}" config_save_failed: "⚠️ Não foi possível guardar a configuração: {error}" model: error_prefix: "Erro: {error}" switched: "Modelo alterado para `{model}`" provider_label: "Fornecedor: {provider}" context_label: "Contexto: {tokens} tokens" max_output_label: "Saída máxima: {tokens} tokens" cost_label: "Custo: {cost}" capabilities_label: "Capacidades: {capabilities}" prompt_caching_enabled: "Cache de prompts: ativado" warning_prefix: "Aviso: {warning}" saved_global: "Guardado em config.yaml (`--global`)" session_only_hint: "_(apenas para esta sessão — adiciona `--global` para tornar permanente)_" current_label: "Atual: `{model}` em {provider}" current_tag: " (atual)" more_models_suffix: " (+{count} mais)" usage_switch_model: "`/model ` — mudar de modelo" usage_switch_provider: "`/model --provider ` — mudar de fornecedor" usage_persist: "`/model --global` — guardar permanentemente" err_skew: "Este gateway está executando código de {boot_rev}, mas o checkout em disco agora está em {disk_rev}. Trocar de modelo poderia causar uma falha por módulo obsoleto — reinicie o gateway para carregar o novo código: hermes gateway restart" err_switch_failed: "Falha ao trocar para o modelo {model} ({error}); permanecendo em {current}." err_config_not_updated: "config.yaml não foi atualizado ({error})" err_stale_override: "salvo em config.yaml, mas a substituição obsoleta da sessão não foi limpa ({error})" next_turn_only: " (apenas no próximo turno — volta ao normal após uma resposta)" switch_cancelled: "🟡 Troca de modelo cancelada. Modelo atual inalterado ({model})." guard_confirm: "⚠️ **{title}**\n\n{message}\n\n_Alternativa em texto: responda `{prefix}approve` para trocar ou `{prefix}cancel` para manter o modelo atual._" agents: header: "🤖 **Agentes e tarefas ativos**" active_agents: "**Agentes ativos:** {count}" this_chat: " · este chat" more: "... e mais {count}" running_processes: "**Processos em segundo plano em execução:** {count}" async_jobs: "**Tarefas assíncronas do gateway:** {count}" background_delegations: "**Delegações em segundo plano:** {count}" none: "Não há agentes ativos nem tarefas em execução." state_starting: "a iniciar" state_running: "em execução" no_progress: " · sem progresso há {seconds}s" quiet_for: " · silêncio há {seconds}s" between_turns: "entre turnos" child_row: " - filho {index}: {calls} chamadas de API · {doing}" active_ago: " · ativo há {seconds}s" approve: no_pending: "Não há nenhum comando pendente para aprovar." once_singular: "✅ Comando aprovado. O agente está a retomar..." once_plural: "✅ Comandos aprovados ({count} comandos). O agente está a retomar..." session_singular: "✅ Comando aprovado (padrão aprovado para esta sessão). O agente está a retomar..." session_plural: "✅ Comandos aprovados (padrão aprovado para esta sessão) ({count} comandos). O agente está a retomar..." always_singular: "✅ Comando aprovado (padrão aprovado permanentemente). O agente está a retomar..." always_plural: "✅ Comandos aprovados (padrão aprovado permanentemente) ({count} comandos). O agente está a retomar..." background: usage: "Uso: /bg \nExemplo: /bg Resume as principais histórias do HN de hoje\n\nExecuta o prompt numa sessão separada. Podes continuar a conversar — o resultado aparecerá aqui quando estiver concluído." started: "🔄 Tarefa em segundo plano iniciada: \"{preview}\"\nID da tarefa: {task_id}\nPodes continuar a conversar — os resultados aparecerão aqui quando estiverem prontos." task_finished: "✅ Tarefa em segundo plano finalizada" task_failed: "❌ Tarefa em segundo plano falhou" exit_code: "saída {code}" last_output: ". Última saída:\n```\n{tail}\n```" rerun_hint: "\nPeça para eu executá-la novamente ou mostrar o log completo." no_credentials: "❌ A tarefa em segundo plano não pôde iniciar porque nenhum login em modelo de IA está configurado. Use /login ou execute `hermes setup` no host." complete_header: "✅ Tarefa em segundo plano concluída\nPrompt: \"{preview}\"\n\n" no_response: "(Nenhuma resposta gerada)" failed: "❌ Sua tarefa em segundo plano \"{preview}\" falhou antes de terminar. Envie /bg novamente para tentar de novo, ou /agents para ver o que ainda está em execução." final_output: "{header}\n\nSaída final:\n```\n{output}\n```" still_running: "⏳ Tarefa em segundo plano ainda em execução" recent_output: "{header}\n\nSaída recente:\n```\n{output}\n```" btw: usage: "Uso: /btw \nExemplo: /btw em que ficheiro estava aquele erro?\n\nResponde a uma pergunta rápida sobre esta conversa sem a interromper. Para uma tarefa independente em segundo plano, usa /bg ." no_history: "Ainda não há conversa — envia a tua pergunta como mensagem normal." no_provider: "❌ Não é possível responder: nenhuma credencial de fornecedor configurada." started: "💬 Pergunta à parte: \"{preview}\"\nA responder a partir de um instantâneo desta conversa — o trabalho atual continua." answer: "💬 /btw: \"{preview}\"\n\n{answer}" failed: "❌ /btw falhou: \"{preview}\"\n{error}" branch: db_unavailable: "Base de dados de sessões indisponível." no_conversation: "Não há conversa para ramificar — envia uma mensagem primeiro." create_failed: "Falha ao criar ramo: {error}" switch_failed: "Ramo criado, mas não foi possível mudar para ele." branched_one: "⑂ Ramificado para **{title}** ({count} mensagem copiada)\nOriginal: `{parent}`\nRamo: `{new}`\nUsa `/resume` para voltar ao original." branched_many: "⑂ Ramificado para **{title}** ({count} mensagens copiadas)\nOriginal: `{parent}`\nRamo: `{new}`\nUsa `/resume` para voltar ao original." branched_thread_one: "⑂ Ramificado para **{title}** em um novo tópico ({count} mensagem copiada)\nTópico: {thread}\nOriginal: `{parent}` — este chat permanece nele\nRamo: `{new}`\nUse `/branch --here` para ramificar neste chat." branched_thread_many: "⑂ Ramificado para **{title}** em um novo tópico ({count} mensagens copiadas)\nTópico: {thread}\nOriginal: `{parent}` — este chat permanece nele\nRamo: `{new}`\nUse `/branch --here` para ramificar neste chat." thread_fallback: "Não foi possível criar um tópico aqui, então o ramo substituiu a sessão deste chat." commands: usage: "Uso: `/commands [page]`" skill_header: "⚡ **Comandos de skill**:" default_desc: "Comando de skill" none: "Não há comandos disponíveis." header: "📚 **Comandos** ({total} no total, página {page}/{total_pages})" nav_prev: "`/commands {page}` ← anterior" nav_next: "seguinte → `/commands {page}`" out_of_range: "_(A página solicitada {requested} estava fora do intervalo, a mostrar a página {page}.)_" compress: not_enough: "Não há conversa suficiente para comprimir (são necessárias pelo menos 4 mensagens)." no_provider: "Nenhum fornecedor configurado — não é possível comprimir." nothing_to_do: "Ainda não há nada para comprimir (a transcrição continua a ser todo o contexto protegido)." aggressive_unsupported: "--aggressive não é suportado; usa '/compress here [N]' para manter apenas as trocas recentes, ou /undo para remover turnos." focus_line: "Foco: \"{topic}\"" summary_failed: "⚠️ Falha ao gerar o resumo ({error}). {count} mensagem(ns) histórica(s) foram removidas e substituídas por um marcador; o contexto anterior já não pode ser recuperado. Considera verificar a configuração do modelo auxiliary.compression." aborted: "⚠️ Compressão abortada ({error}). Nenhuma mensagem foi removida — a conversa está inalterada. Executa /compress para tentar de novo, /reset para uma sessão nova, ou verifica a configuração do modelo auxiliary.compression." aux_failed: "ℹ️ O modelo de compressão configurado `{model}` falhou ({error}). Recuperado com o teu modelo principal — o contexto está intacto — mas talvez queiras verificar `auxiliary.compression.model` em config.yaml." turnhold_deferred: "ℹ️ Compressão de contexto adiada — o resumo ainda está em transmissão. Continuando sem compressão neste turno." failed: "Compressão falhou: {error}" hygiene_timeout: "⚠️ Encurtar o histórico da conversa demorou demais, então pulei essa etapa e mantive tudo como está. Execute /compress para tentar novamente ou /new para começar do zero." hygiene_timeout_doctor_hint: " Se isso continuar acontecendo, execute `hermes doctor` no host." hygiene_failed: "⚠️ Falha ao encurtar o histórico da conversa, então mantive tudo como está. Execute /compress para tentar novamente ou /new para começar do zero. Se isso continuar acontecendo, execute `hermes doctor` no host." codex_nothing: "🗜️ Nada para compactar: esta sessão roda no runtime app-server do Codex, cujo contexto fica em um tópico controlado pelo Codex que só existe enquanto o agente está ativo. Envie uma mensagem primeiro e depois /compress — ou /reset para começar do zero." codex_compacted: "🗜️ Tópico do app-server do Codex compactado (thread/compact). O espelho da transcrição permanece inalterado por design — o app-server agora carrega o contexto compactado." codex_incomplete: "⚠️ A compactação do app-server do Codex não foi concluída — o tópico permanece inalterado. Verifique os logs do app-server, tente /compress novamente ou use /reset para uma sessão limpa." debug: upload_failed: "✗ Falha ao carregar relatório de depuração: {error}" header: "**Relatório de depuração carregado:**" auto_delete: "⏱ Os pastes serão eliminados automaticamente em 6 horas." full_logs_hint: "Para enviar logs completos, usa `hermes debug share` a partir da CLI." share_hint: "Partilha estes links com a equipa do Hermes para obter suporte." report_label: "Relatório" deny: stale: "❌ Comando negado (a aprovação tinha expirado)." no_pending: "Não há nenhum comando pendente para negar." denied_singular: "❌ Comando negado." denied_plural: "❌ Comandos negados ({count} comandos)." denied_reason_singular: "❌ Comando negado. Motivo repassado ao agente: \"{reason}\"" denied_reason_plural: "❌ Comandos negados ({count} comandos). Motivo repassado ao agente: \"{reason}\"" fast: not_supported: "⚡ /fast só está disponível para modelos da OpenAI que suportam Priority Processing." status: "⚡ Priority Processing\n\nModo atual: `{mode}`\n\n_Uso:_ `/fast `" unknown_arg: "⚠️ Argumento desconhecido: `{arg}`\n\n**Opções válidas:** normal, fast, status" saved: "⚡ ✓ Priority Processing: **{label}** (guardado na configuração)\n_(produz efeito na próxima mensagem)_" session_only: "⚡ ✓ Priority Processing: **{label}** (apenas esta sessão)" label_fast: "RÁPIDO" label_normal: "NORMAL" status_fast: "rápido" status_normal: "normal" picker_title: "⚡ **Priority Processing**\n\nModo atual: `{mode}`\n\nEscolha uma opção:" choice_fast: "fast — Priority Processing ativado" choice_normal: "normal — processamento padrão" choice_auto: "auto — rápido nos primeiros segundos de cada turno" choice_cold: "cold — rápido apenas no primeiro turno de uma sessão" choice_ultrafast: "ultrafast — OpenAI Ultrafast (GPT-6 Astra, preço 6x)" ultrafast_not_supported: "⚡ O Ultrafast só está disponível para o GPT-6 Astra (modelo atual: `{model}`)." footer: status: "📎 Rodapé de execução: **{state}**\nCampos: `{fields}`\nPlataforma: `{platform}`" usage: "Uso: `/footer [on|off|status]`" saved: "📎 Rodapé de execução: **{state}**{example}\n_(guardado globalmente — produz efeito na próxima mensagem)_" example_line: "\nExemplo: `{preview}`" state_on: "LIGADO" state_off: "DESLIGADO" goal: unavailable: "Os objetivos não estão disponíveis nesta sessão." no_goal_set: "Nenhum objetivo definido." paused: "⏸ Objetivo pausado: {goal}" no_resume: "Nenhum objetivo para retomar." resumed: "▶ Objetivo retomado: {goal}\nContinuando agora — darei o próximo passo imediatamente." invalid: "Objetivo inválido: {error}" set: "⊙ Objetivo definido (orçamento de {budget} turnos): {goal}\nVou continuar a trabalhar até o objetivo estar concluído, pausares/limpares ou o orçamento esgotar.\nControlos: /goal status · /goal pause · /goal resume · /goal clear" gate_add_admin_only: "⛔ /goal gate add exige um administrador do gateway configurado explicitamente (allow_admin_from para DMs, group_allow_admin_from para grupos)." help: header: "📖 **Comandos do Hermes**\n" skill_header: "\n⚡ **Comandos de skill** ({count} ativos):" more_use_commands: "\n... e mais {count}. Usa `/commands` para a lista paginada completa." insights: invalid_days: "Valor --days inválido: {value}" error: "Erro ao gerar análise: {error}" kanban: error_prefix: "⚠ erro do kanban: {error}" subscribed_suffix: "(subscrito — receberás uma notificação quando {task_id} terminar ou bloquear)" truncated_suffix: "… (truncado; usa `hermes kanban …` no teu terminal para a saída completa)" no_output: "(sem saída)" wake: completed: "completed" gave_up: "gave up (retries exhausted)" crashed: "crashed (worker exited); dispatcher will retry" timed_out: "timed out; dispatcher will retry" blocked: "blocked; needs attention" review_requested: "handed off for review; the implementation is done" changes_requested: "review requested changes (BLOCK); implementation is not approved" block_loop_detected: "routed to triage after repeated blocks; orchestration attention needed" status_default: "status changed" status_joiner: ", " message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step." handoff: "Result: {summary}" review_detail: "Review feedback: {reason}\nInspect the existing card and its current review run; return work to the same implementation task. Do not treat this BLOCK as approval and do not create a duplicate task." guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist." ping: completed: "✔ {head} concluída — {title}{handoff}" review_requested: "👀 {head} pronta para revisão — {title}{handoff}" changes_default_reason: "o feedback do revisor exige alterações" reviewer_suffix: " — revisor @{reviewer}" implementer_suffix: " → implementador @{implementer}" changes_requested: "🛑 {board_tag}Kanban {task_id}: a revisão solicitou alterações/BLOCK: {reason}{provenance}" triage: "🛑 {head} encaminhada para TRIAGE — {why}{recurrences}{reason}" triage_decision: "precisa de uma decisão humana" triage_attention: "para atenção da orquestração" triage_recurrences: " (bloqueada {value}x pela mesma causa)" reason_suffix: ": {value}" failed_n_times: "falhou {count} vezes seguidas" kept_failing: "continuou falhando" last_error: " (último: {value})" gave_up: "⛔ {head} agora está bloqueada: {count}{last}. Corrija a causa e depois execute `hermes kanban unblock {task_id}` (ou `hermes kanban reassign {task_id}`). Logs: `hermes kanban log {task_id}`." limit_minutes: "seu limite de {minutes} minutos" limit_generic: "seu limite de tempo" timed_out: "⏱ {head} ultrapassou {span} e foi interrompida; será tentada novamente automaticamente." blocked: "⏸ {head} bloqueada{reason}" crashed: "✖ {head} — seu worker parou inesperadamente; será tentada novamente automaticamente." status: "🔄 {head} → {status}" board_tag: "[{board}] " assignee_tag: "@{assignee} " head: "{board_tag}{assignee_tag}Kanban {task_id}" personality: none_configured: "Nenhuma personalidade configurada em `{path}/config.yaml`" header: "🎭 **Personalidades disponíveis**\n" none_option: "• `none` — (sem sobreposição de personalidade)" item: "• `{name}` — {preview}" usage: "\nUso: `/personality `" save_failed: "⚠️ Falha ao guardar a alteração de personalidade: {error}" cleared: "🎭 Personalidade removida — a usar o comportamento base do agente.\n_(produz efeito na próxima mensagem)_" set_to: "🎭 Personalidade definida como **{name}**\n_(produz efeito na próxima mensagem)_" unknown: "Personalidade desconhecida: `{name}`\n\nDisponíveis: {available}" err_config_write: "falha ao gravar a configuração" profile: header: "👤 **Perfil:** `{profile}`" home: "📂 **Início:** `{home}`" plain: "Perfil: {profile}\nHome: {home}" reasoning: level_default: "medium (predefinido)" level_disabled: "none (desativado)" scope_session: "substituição de sessão" scope_global: "configuração global" status: "🧠 **Definições de raciocínio**\n\n**Esforço:** `{level}`\n**Âmbito:** {scope}\n**Visualização:** {display}\n\n_Uso:_ `/reasoning [--global]`" display_on: "ativada ✓" display_off: "desativada" display_set_on: "🧠 ✓ Visualização do raciocínio: **ATIVADA**\nO pensamento do modelo será mostrado antes de cada resposta em **{platform}**." display_set_off: "🧠 ✓ Visualização do raciocínio: **DESATIVADA** para **{platform}**" reset_global_unsupported: "⚠️ `/reasoning reset --global` não é suportado. Usa `/reasoning --global` para alterar o predefinido global." reset_done: "🧠 ✓ Substituição de raciocínio da sessão removida; a regressar à configuração global." unknown_arg: "⚠️ Argumento desconhecido: `{arg}`\n\n**Níveis válidos:** none, minimal, low, medium, high, xhigh, max, ultra\n**Visualização:** show, hide\n**Persistir:** adiciona `--global` para guardar para além desta sessão" picker_title: "🧠 **Definições de raciocínio**\n\n**Esforço:** `{level}`\n**Âmbito:** {scope}\n**Visualização:** {display}\n\nEscolha uma opção:" choice_none: "none — desativar raciocínio" choice_reset: "reset — limpar o override de sessão" choice_show: "mostrar raciocínio nas respostas" choice_hide: "ocultar raciocínio das respostas" set_global: "🧠 ✓ Esforço de raciocínio definido como `{effort}` (guardado na configuração)\n_(produz efeito na próxima mensagem)_" set_global_save_failed: "🧠 ✓ Esforço de raciocínio definido como `{effort}` (apenas sessão — falha ao guardar a configuração)\n_(produz efeito na próxima mensagem)_" set_session: "🧠 ✓ Esforço de raciocínio definido como `{effort}` (apenas sessão — adiciona `--global` para persistir)\n_(produz efeito na próxima mensagem)_" quote_label_discord: "-# 💭 Raciocínio" quote_label_md: "> 💭 **Raciocínio:**" more_lines: "\n_... ({count} linhas a mais)_" block: "💭 **Raciocínio:**\n```\n{reasoning}\n```\n\n{response}" reload_mcp: cancelled: "🟡 /reload-mcp cancelado. As ferramentas MCP não foram alteradas." always_followup: "ℹ️ Próximas chamadas a `/reload-mcp` serão executadas sem confirmação. Reativa através de `approvals.mcp_reload_confirm: true` em `config.yaml`." confirm_prompt: "⚠️ **Confirmar /reload-mcp**\n\nRecarregar os servidores MCP reconstrói o conjunto de ferramentas desta sessão e **invalida a cache de prompt do fornecedor** — a próxima mensagem reenviará os tokens de entrada completos. Em modelos de contexto longo ou de raciocínio elevado isto pode ser dispendioso.\n\nEscolhe:\n• **Aprovar uma vez** — recarregar agora\n• **Aprovar sempre** — recarregar agora e silenciar este pedido permanentemente\n• **Cancelar** — manter as ferramentas MCP inalteradas\n\n_Alternativa em texto: responde `/approve`, `/always` ou `/cancel`._" header: "🔄 **Servidores MCP recarregados**\n" reconnected: "♻️ Reconectados: {names}" added: "➕ Adicionados: {names}" removed: "➖ Removidos: {names}" none_connected: "Não há servidores MCP ligados." tools_available: "\n🔧 {tools} ferramenta(s) disponíveis de {servers} servidor(es)" failed: "❌ Falha ao recarregar MCP: {error}" reload_skills: header: "🔄 **Skills recarregadas**\n" no_new: "Não foram detetadas novas skills." total: "\n📚 {count} skill(s) disponíveis" added_header: "➕ **Skills adicionadas:**" removed_header: "➖ **Skills removidas:**" item_with_desc: " - {name}: {desc}" item_no_desc: " - {name}" failed: "❌ Falha ao recarregar skills: {error}" reset: header_default: "✨ Sessão reiniciada! A começar do zero." header_new: "✨ Nova sessão iniciada!" header_titled: "✨ Nova sessão iniciada: {title}" title_rejected: "\n⚠️ Título rejeitado: {error}" title_error_untitled: "\n⚠️ {error} — sessão iniciada sem título." title_empty_untitled: "\n⚠️ O título fica vazio após a limpeza — sessão iniciada sem título." tip: "\n✦ Dica: {tip}" restart: in_progress: "⏳ O reinício do gateway já está em curso..." restarting: "♻ A reiniciar o gateway. Se não fores notificado em 60 segundos, reinicia a partir da consola com `hermes gateway restart`." resume: db_unavailable: "Base de dados de sessões indisponível." parse_error: "⚠️ Could not parse `/resume` arguments: {error}. Use quotes around titles with spaces, for example: `/resume \"Project A Plan\"`." matrix_no_named_sessions: "No named sessions found for this Matrix room. Use `/title My Session` to name the current room session, `/resume --all` to list all Matrix sessions, or `/resume --cross-room ` to explicitly cross room boundaries." matrix_blocked_no_origin: "⚠️ /resume do Matrix bloqueado: esta sessão com nome não tem uma sala de origem registada, por isso o Hermes não a retoma dentro da sala atual por padrão. Usa `/resume --cross-room {name}` se quiseres mesmo atravessar os limites da sala." matrix_blocked_other_room: "⚠️ /resume do Matrix bloqueado: essa sessão pertence a outra sala do Matrix ({room}). Usa `/resume --cross-room {name}` se quiseres mesmo retomá-la aqui." matrix_cross_room_success: "⚠️ Cross-room resume: resumed **{title}** inside Matrix room **{room}**. Future messages in this room will use that transcript until `/reset` or another `/resume`.{msg_part}" blocked_not_owner: "⚠️ /resume bloqueado: '**{name}**' pertence a outro utilizador ou chat. Só podes retomar sessões deste chat." no_named_sessions: "Não foram encontradas sessões com nome.\nUsa `/title A minha sessão` para nomear a sessão atual e depois `/resume A minha sessão` para voltar a ela." all_requires_admin: "_Nota: `--all` (listagem entre conversas) requer um administrador configurado; mostram-se apenas as sessões desta conversa._" list_header: "📋 **Sessões com nome**\n" list_item: "• **{title}**{preview_part}" list_item_numbered: "{index}. **{title}**{preview_part}" list_preview_suffix: " — _{preview}_" list_footer: "\nUso: `/resume `" list_footer_numbered: "\nUso: `/resume ` ou `/resume ` (ex.: `/resume 1` para a mais recente)" list_failed: "Não foi possível listar as sessões: {error}" out_of_range: "O índice de retomada {index} está fora do intervalo.\nUse `/resume` sem argumentos para ver as sessões disponíveis." not_found: "Não foi encontrada nenhuma sessão correspondente a '**{name}**'.\nUsa `/resume` sem argumentos para ver as sessões disponíveis." already_on: "📌 Já estás na sessão **{name}**." switch_failed: "Falha ao mudar de sessão." resumed_one: "↻ Sessão **{title}** retomada ({count} mensagem). Conversa restaurada." resumed_many: "↻ Sessão **{title}** retomada ({count} mensagens). Conversa restaurada." resumed_no_count: "↻ Sessão **{title}** retomada. Conversa restaurada." msg_count_one: " ({count} mensagem)" msg_count_other: " ({count} mensagens)" retry: no_previous: "Não há mensagem anterior para tentar novamente." unsafe: "Não é possível tentar essa mensagem novamente com segurança: {error}" failed_unchanged: "Falha na nova tentativa; a transcrição não foi alterada." rollback: not_enabled: "Os checkpoints não estão ativados.\nAtiva-os em config.yaml:\n```\ncheckpoints:\n enabled: true\n```" none_found: "Não foram encontrados checkpoints para {cwd}" invalid_number: "Número de checkpoint inválido. Usa 1-{max}." restored: "✅ Restaurado para o checkpoint {hash}: {reason}\nFoi guardado automaticamente um snapshot anterior ao rollback." kept_user_edits: "↷ As suas edições manuais foram mantidas: {files}\nUse /rollback --all para restaurar essas também." kept_oversize: "↷ Mantido (grande demais para os checkpoints, sem cópia guardada para reverter): {files}" failed_deletes: "⚠️ Não foi possível remover (mantido no lugar): {files}" restore_failed: "❌ {error}" diff: not_enabled: "Os checkpoints não estão ativados, então não há linha de base da sessão.\nAtive em config.yaml:\n```\ncheckpoints:\n enabled: true\n```\nO /diff simples continua funcionando — ele usa git diretamente." no_changes: "Sem alterações." failed: "{error}" err_default: "Não foi possível gerar o diff" more_untracked: "\n... e {count} a mais" untracked_label: "**Não rastreados:**" truncated_note: "\n... (truncado — {lines} linhas no total; use /diff --stat para um resumo)" set_home: save_failed: "Falha ao guardar o canal principal: {error}" success: "✅ Canal principal definido como **{name}** (ID: {chat_id}).\nAs tarefas cron e mensagens entre plataformas serão entregues aqui." err_missing_platform: "Plataforma lógica ausente" err_relay_unauthenticated: "O relay não autentica este destino de home lógico" context: header: "🧠 **Janela de contexto**" model: "Modelo: `{model}`" window: "Janela: {total} tokens" in_use: "Em uso: {used} / {total} ({pct}%)" bar: "{bar}" headroom: "Margem até ao limite: {headroom} tokens" threshold: "Compressão automática em: {threshold} ({threshold_pct}%) — faltam {to_go}" over_threshold: "⚠️ **Acima do limiar de compressão automática ({threshold}, {threshold_pct}%)**" compressions: "Compressões nesta sessão: {count}" last_savings: "Última compressão libertou: {savings}% do contexto" totals_header: "Totais da sessão (acumulados em {calls} chamadas à API)" totals_line: "Entrada {input} · Saída {output} · Raciocínio {reasoning}" total_billed: "Total faturado: {total}" throughput_note: "_Tráfego, não tamanho do contexto — cada chamada reenvia a janela acima._" estimated: "Contexto estimado: ~{count} tokens em {messages} mensagens" detail_after_first: "_(Estatísticas completas de compressão e tráfego disponíveis após a primeira resposta do agente)_" no_data: "Ainda não há dados de contexto disponíveis. Envia uma mensagem para iniciar uma sessão." category: system_prompt: "Prompt do sistema" tool_definitions: "Definições de ferramentas" rules: "Regras" skills: "Skills" mcp: "MCP" subagent_definitions: "Definições de subagentes" memory: "Memória" conversation: "Conversa" category_header: "Uso estimado por categoria" no_data_yet: " (sem dados ainda — envie uma mensagem primeiro)" free_space: "Espaço livre" category_row: "{glyph} {label} ~{tokens} tokens ~{pct}%" toolset_row: " {toolset} {count} ferramentas ~{tokens} tokens" not_available: "n/d" skill_row: " {name} índice ~{index_tokens} SKILL.md {md_tokens} tokens" and_more: " … e {count} a mais" toolsets_title: "Conjuntos de ferramentas por custo de esquema (maiores primeiro)" skills_title: "Skills por custo (índice = sempre ativo; SKILL.md = custo quando carregada)" window_line: "Janela de contexto: {mark}{used} / {max} tokens ({mark}{pct}%)" source: local_estimate: "estimativa local" provider_usage: "uso do fornecedor" provider_usage_plus_estimate: "uso do fornecedor + estimativa das novas mensagens" source_line: "Fonte: {source}; as contagens por categoria são estimativas locais." hint_all: "Use /context all para ver os custos por skill e por conjunto de ferramentas." status: header: "📊 **Estado do Hermes Gateway**" matrix_scope_header: "**Âmbito do Matrix:**" matrix_scope_room: " room: {room}" matrix_scope_room_id: " room_id: {room_id}" matrix_scope_thread: " thread_id: {thread_id}" matrix_scope_mode: " session_scope: {scope}" matrix_scope_key: " session_key: {session_key}" session_id: "**ID da sessão:** `{session_id}`" title: "**Título:** {title}" created: "**Criada:** {timestamp}" last_activity: "**Última atividade:** {timestamp}" model: "**Modelo:** `{model}`" model_provider: "**Modelo:** `{model}` ({provider})" free_tier: "Nous · plano gratuito · nous/welcome · /login para entrar" context: "**Contexto:** {used} / {total} ({pct}%)" context_used: "**Contexto:** ~{used} tokens" tokens: "**Total acumulado de tokens faturados:** {tokens} _(não é o tamanho atual do contexto; usa `/context`)_" agent_running: "**Agente em execução:** {state}" state_yes: "Sim ⚡" state_no: "Não" queued: "**Seguimentos em fila:** {count}" platforms: "**Plataformas ligadas:** {platforms}" stop: stopped_pending: "⚡ Parado. O agente ainda não tinha começado — podes continuar esta sessão." stopped: "⚡ Parado. Podes continuar esta sessão." no_active: "Não há nenhuma tarefa ativa para parar." force_stopped_pending: "⚡ Interrupção forçada. O agente ainda estava iniciando — sessão desbloqueada." title: db_unavailable: "Base de dados de sessões indisponível." warn_prefix: "⚠️ {error}" empty_after_clean: "⚠️ O título está vazio após a limpeza. Usa caracteres imprimíveis." set_to: "✏️ Título da sessão definido: **{title}**" not_found: "Sessão não encontrada na base de dados." current_with_title: "📌 Sessão: `{session_id}`\nTítulo: **{title}**" current_no_title: "📌 Sessão: `{session_id}`\nSem título. Uso: `/title O meu nome de sessão`" topic: not_telegram_dm: "O comando /topic só está disponível em chats privados do Telegram." no_session_db: "Base de dados de sessões indisponível." unauthorized: "Não tens autorização para usar /topic neste bot." restore_needs_topic: "Para restaurar uma sessão, cria ou abre primeiro um topic do Telegram, depois envia /topic dentro desse topic. Para criar um novo topic, abre All Messages e envia qualquer mensagem aí." topics_disabled: "Os topics do Telegram ainda não estão ativados para este bot.\n\nComo ativá-los:\n1. Abre @BotFather.\n2. Escolhe o teu bot.\n3. Abre Bot Settings → Threads Settings.\n4. Ativa Threaded Mode e garante que os utilizadores podem criar novas threads.\n\nDepois envia /topic novamente." topics_user_disallowed: "Os topics do Telegram estão ativados, mas os utilizadores não podem criá-los.\n\nAbre @BotFather → escolhe o teu bot → Bot Settings → Threads Settings, depois desativa 'Disallow users to create new threads'.\n\nDepois envia /topic novamente." enable_failed: "Falha ao ativar o modo topic do Telegram: {error}" bound_status: "Este topic está associado a:\nSessão: {label}\nID: {session_id}\n\nUsa /new para substituir este topic por uma sessão nova.\nPara trabalho paralelo, abre All Messages e envia uma mensagem aí para criar outro topic." thread_ready: "Os topics multi-sessão do Telegram estão ativados.\n\nEste topic será usado como uma sessão independente do Hermes. Usa /new para substituir a sessão atual deste topic. Para trabalho paralelo, abre All Messages e envia uma mensagem aí para criar outro topic." untitled_session: "Sessão sem título" restore_step_1: "1. Crie ou abra um tópico. Para criar um novo, abra All Messages e envie qualquer mensagem lá." restore_step_2: "2. Envie /topic dentro desse tópico." default_title: "Hermes Chat" root_lobby: "Este chat principal é reservado para comandos do sistema.\n\nPara iniciar um novo chat do Hermes, abra o tópico All Messages no topo desta interface do bot e envie qualquer mensagem lá. O Telegram criará um novo tópico para essa mensagem; cada tópico funciona como uma sessão independente do Hermes." root_new: "Para iniciar um novo chat paralelo do Hermes, abra o tópico All Messages no topo desta interface do bot e envie qualquer mensagem lá. O Telegram criará um novo tópico para ela.\n\nCada tópico é uma sessão independente do Hermes. Use /new dentro de um tópico existente apenas se quiser substituir a sessão atual daquele tópico." new_header: "Nova sessão do Hermes iniciada neste tópico.\n\nDica: para trabalho paralelo, abra All Messages e envie uma mensagem lá para criar um tópico separado, em vez de usar /new aqui. /new substitui a sessão vinculada ao tópico atual." help: "/topic — ativa o modo DM multissessão (um bot, vários chats paralelos)\n\nUso:\n /topic Ativa o modo de tópicos ou mostra o status se já estiver ativo\n /topic help Mostra esta mensagem\n /topic off Desativa o modo de tópicos e limpa os vínculos de tópicos\n /topic Dentro de um tópico: restaura uma sessão anterior pelo ID\n\nComo funciona:\n1. Execute /topic uma vez nesta DM — o Hermes verifica se Threads\n Settings está ativado no BotFather e liga o modo multissessão.\n2. Toque em All Messages no topo do bot e envie qualquer mensagem.\n O Telegram cria um novo tópico para essa mensagem; cada tópico é\n uma sessão independente do Hermes (histórico e contexto novos).\n3. A DM raiz vira um lobby do sistema — envie /topic, /status,\n /help, /usage lá. Prompts normais vão em um tópico.\n4. /new dentro de um tópico reinicia apenas a sessão daquele tópico.\n5. /topic dentro de um tópico restaura uma sessão antiga nele." system_topic_name: "Sistema" system_topic_intro: "Tópico do sistema para comandos e status do Hermes." setup_image_caption: "BotFather → Bot Settings → Threads Settings" no_chat_id: "Não foi possível determinar o ID do chat." mode_not_enabled: "O modo de tópicos multissessão não está ativado para este chat no momento." disable_failed: "Falha ao desativar o modo de tópicos: {error}" mode_disabled: "O modo de tópicos multissessão agora está OFF para este chat.\n\nOs tópicos existentes no Telegram não são removidos — eles apenas deixam de ser tratados como sessões independentes. A DM raiz volta a funcionar como um chat normal do Hermes. Execute /topic para reativar depois." status_enabled: "Os tópicos multissessão do Telegram estão ativados." status_how_to: "Para criar um novo chat do Hermes, abra All Messages no topo desta interface do bot e envie qualquer mensagem lá. O Telegram criará um novo tópico para ela." previous_unlinked: "Sessões anteriores sem vínculo:" restore_one: "Para restaurar uma:" restore_example: "Exemplo: envie /topic {session_id} dentro de um tópico." no_unlinked: "Nenhuma sessão anterior do Telegram sem vínculo foi encontrada." restore_later: "Para restaurar uma sessão anterior mais tarde:" session_not_found: "Sessão não encontrada: {session_id}" not_telegram_session: "Essa sessão não é uma sessão do Telegram e não pode ser restaurada neste tópico." not_your_session: "Essa sessão não pertence a este usuário do Telegram." already_linked: "Essa sessão já está vinculada a outro tópico do Telegram." restored: "Sessão restaurada: {title}" restored_last_message: "\n\nÚltima mensagem do Hermes:\n{text}" undo: nothing: "Nada para anular." removed: "↩️ {turns} turno(s) anulado(s) ({count} mensagem(ns)).\nGuardado em: \"{preview}\"\nCopia/edita o texto acima e envia-o para voltar a perguntar a partir daqui." invalid_count: "Contagem inválida \"{arg}\" — usa /undo ou /undo N." update: platform_not_messaging: "✗ /update só está disponível em plataformas de mensagens. Executa `hermes update` a partir do terminal." not_git_repo: "✗ Não é um repositório git — não é possível atualizar." hermes_cmd_not_found: "✗ Não foi possível localizar o comando `hermes`. O Hermes está em execução, mas o comando de atualização não conseguiu encontrar o executável no PATH nem através do interpretador Python atual. Tenta executar `hermes update` manualmente no teu terminal." start_failed: "✗ Falha ao iniciar a atualização: {error}" starting: "☤ A iniciar a atualização do Hermes… Vou transmitir o progresso aqui." reply_failed: "✗ Falha ao enviar a resposta ao processo de atualização: {error}" reply_sent: "✓ `{label}` enviado ao processo de atualização." failed_notice: "❌ A atualização do Hermes falhou; a versão anterior continua em execução. Execute `hermes update` no host para ver o erro completo, ou tente /update novamente mais tarde." prompt_default: " (padrão: {default})" prompt: "☤ **A atualização precisa da sua resposta:**\n\n{prompt}{default_hint}\n\nResponda `{prefix}approve` (sim) ou `{prefix}deny` (não), ou digite sua resposta diretamente." finished: "✅ Atualização do Hermes finalizada." timed_out: "❌ A atualização do Hermes excedeu o tempo limite após 30 minutos." finished_success: "✅ Atualização do Hermes finalizada com sucesso." last_lines: "{msg}\n\nÚltimas linhas:\n```\n{tail}\n```" managed_action: "atualizar o Hermes Agent" not_applicable: "✗ `hermes update` não se aplica a esta instalação ({method}).\nAtualize com: {command}" usage: rate_limits: "⏱️ **Limites de taxa:** {state}" header_session: "📊 **Utilização de tokens da sessão**" label_model: "Modelo: `{model}`" label_input_tokens: "Tokens de entrada: {count}" label_cache_read: "Tokens de leitura de cache: {count}" label_cache_write: "Tokens de escrita de cache: {count}" label_output_tokens: "Tokens de saída: {count}" label_total: "Total: {count}" label_api_calls: "Chamadas à API: {count}" label_cost: "Custo: {prefix}${amount}" label_cost_included: "Custo: incluído" label_context: "Contexto: {used} / {total} ({pct}%)" label_compressions: "Compressões: {count}" breakdown_header: "🧩 **Detalhamento do contexto** _(estimado)_" breakdown_line: "• {label}: ~{count} ({pct}%)" breakdown_cat_system_prompt: "Prompt do sistema" breakdown_cat_tool_definitions: "Definições de ferramentas" breakdown_cat_rules: "Regras" breakdown_cat_skills: "Habilidades" breakdown_cat_mcp: "MCP" breakdown_cat_subagent_definitions: "Definições de subagentes" breakdown_cat_memory: "Memória" breakdown_cat_conversation: "Conversa" header_session_info: "📊 **Informações da sessão**" label_messages: "Mensagens: {count}" label_estimated_context: "Contexto estimado: ~{count} tokens" detailed_after_first: "_(Utilização detalhada disponível após a primeira resposta do agente)_" no_data: "Não há dados de utilização disponíveis para esta sessão." unknown_subcommand: "Subcomando /usage desconhecido: `{args}`. Tente `/usage` ou `/usage reset [--force]`." reset_wrong_provider: "Os resets de limite acumulados só estão disponíveis no provedor openai-codex. Troque primeiro com `/model`." credits: not_logged_in: "Você não está conectado ao Nous Portal. Faça login para ver seu saldo de créditos e recarregar." verbose: not_enabled: "O comando `/verbose` não está ativado para plataformas de mensagens.\n\nAtiva-o em `config.yaml`:\n```yaml\ndisplay:\n tool_progress_command: true\n```" mode_off: "⚙️ Progresso de ferramentas: **OFF** — não é mostrada qualquer atividade de ferramentas." mode_new: "⚙️ Progresso de ferramentas: **NEW** — mostrado quando a ferramenta muda (comprimento da pré-visualização: `display.tool_preview_length`, predefinição 40)." mode_all: "⚙️ Progresso de ferramentas: **ALL** — cada chamada de ferramenta é mostrada (comprimento da pré-visualização: `display.tool_preview_length`, predefinição 40)." mode_verbose: "⚙️ Progresso de ferramentas: **VERBOSE** — cada chamada de ferramenta com os argumentos completos." mode_log: "⚙️ Progresso de ferramentas: **LOG** — silencioso no chat; as chamadas de ferramentas são gravadas em ~/.hermes/logs/tool_calls.log." saved_suffix: "_(guardado para **{platform}** — produz efeito na próxima mensagem)_" save_failed: "_(não foi possível guardar na configuração: {error})_" voice: enabled_voice_only: "Modo de voz ativado.\nResponderei com voz quando enviares mensagens de voz.\nUsa /voice tts para receber respostas de voz em todas as mensagens." disabled_text: "Modo de voz desativado. Respostas apenas em texto." tts_enabled: "Auto-TTS ativado.\nTodas as respostas incluirão uma mensagem de voz." status_mode: "Modo de voz: {label}" status_channel: "Canal de voz: #{channel}" status_participants: "Participantes: {count}" status_member: " - {name}{status}" speaking: " (a falar)" enabled_short: "Modo de voz ativado." disabled_short: "Modo de voz desativado." label_off: "Desativado (apenas texto)" label_voice_only: "Ativado (resposta de voz a mensagens de voz)" label_all: "TTS (resposta de voz a todas as mensagens)" help: "{toggle}\n\n**Como funciona o /voice**\n• `/voice on` — resposta por voz quando envias uma mensagem de voz\n• `/voice tts` — resposta por voz a *todas* as mensagens\n• `/voice off` — voltar às respostas apenas em texto\n• `/voice status` — mostrar o modo atual\n• `/voice` (sem argumento) — alternar rapidamente entre ligado e desligado{channels}" help_channels: "\n\n**Canais de voz ao vivo (Discord)**\n• Entra primeiro num canal de voz, depois `/voice channel` — eu entro, ouço e falo as minhas respostas\n• `/voice leave` — desligar do canal de voz" transcript_echo_short: "🎙️ \"{text}\"" channel_unsupported: "Canais de voz não são suportados nesta plataforma." channel_guild_only: "Este comando só funciona em um servidor do Discord." channel_not_in_voice: "Você precisa estar em um canal de voz primeiro." channel_join_failed: "Falha ao entrar no canal de voz: {error}" channel_deps_missing: "Faltam dependências de voz (PyNaCl / davey). Execute: `{hint}`" channel_join_permissions: "Falha ao entrar no canal de voz. Verifique as permissões do bot (Connect + Speak)." channel_joined: "Entrei no canal de voz **{name}**.\nVou falar minhas respostas e ouvir você. Use /voice leave para desconectar." channel_not_joined: "Não estou em um canal de voz." channel_left: "Saí do canal de voz." transcript_echo: "**[Voz]** <@{user}>: {text}" yolo: disabled: "⚠️ Modo YOLO **DESATIVADO** nesta sessão — comandos perigosos exigirão aprovação." enabled: "⚡ Modo YOLO **ATIVADO** nesta sessão — todos os comandos são aprovados automaticamente. Usa com precaução." shared: session_db_unavailable: "Base de dados de sessões indisponível." session_db_unavailable_prefix: "Base de dados de sessões indisponível" session_not_found: "Sessão não encontrada na base de dados." warn_passthrough: "⚠️ {error}" unknown_error: "erro desconhecido" error_prefix: "Erro: {error}" history_unreadable: "⚠️ Não consigo ler o histórico desta conversa agora (suas mensagens anteriores existem, mas não puderam ser carregadas). Execute `hermes doctor --fix` no host ou use /new para começar do zero." agent_running_retry_later: "O agente está em execução — aguarde o turno terminar e depois use /{command}." none_marker: "(nenhum)" none_value: "nenhum" unknown_value: "desconhecido" exec_approval: header: "O Hermes quer executar um comando que precisa da sua aprovação" reason_label: "Motivo da sinalização" default_reason: "comando perigoso" smart_deny_line: "NEGAR inteligente: a exceção do proprietário vale apenas para esta operação." smart_deny_heading: "⚠️ **NEGAR inteligente — exceção do proprietário para uma operação:**" timed_out_notice: "⌛ A aprovação expirou após {window} — o comando NÃO foi executado. Peça para eu tentar novamente se ainda quiser, ou aumente approvals.timeout em config.yaml." timed_out_card_body: "{notice}\n```\n{command}\n```" action_once: "Permitir uma vez" action_session: "Permitir na sessão" action_always: "Sempre permitir" action_deny: "Negar" deadline: "Se não responder em {window}, ele NÃO será executado." text_choice_once: "Responda `{prefix}approve` para executar uma vez" text_choice_session: "`{prefix}approve session` para permitir este padrão pelo restante desta sessão" text_choice_always: "`{prefix}approve always` para permitir permanentemente" text_choice_deny: "`{prefix}deny` para cancelar" text_choice_joiner: ", " text_choice_last: ", ou {choice}.\n" text_body: "{heading}\n```\n{command}\n```\n{reason_label}: {reason}\n\n" notify: media_kind: audio: "áudio" video: "vídeo" file: "arquivo" image: "imagem" media_delivery_failed: "⚠️ Não foi possível entregar o anexo de {kind}." media_delivery_failed_with_name: "⚠️ Não foi possível entregar o anexo de {kind} ({file_name})." delivery_failed_retry: "⚠️ Falha na entrega da mensagem após várias tentativas. Tente novamente — sua solicitação foi processada, mas a resposta não pôde ser enviada." plain_fallback_prefix: "(Falha na formatação da resposta, texto simples:)\n\n{content}" turn_error_no_details: "nenhum detalhe disponível" turn_error_detailed: "Desculpe, encontrei um erro ({error_type}).\n{error_detail}\nTente novamente ou use /reset para iniciar uma nova sessão." turn_error: "Desculpe, encontrei um erro." context_injection_refused: "Injeção de contexto recusada." no_home_channel: "📬 Nenhum canal principal está definido para {platform}. O canal principal é onde o Hermes entrega resultados de tarefas cron e mensagens entre plataformas.\n\nDigite {sethome_cmd} para tornar este chat seu canal principal, ou ignore para pular." unauthorized: action_notice: "Este bot é privado e você não está na lista de permitidos. Se for o proprietário, execute `hermes pairing approve {platform} ` no host (`hermes pairing list` mostra o id)." admin_only_can_run: "Você pode executar: " admin_only_whoami_hint: ". Use /whoami para ver a lista completa." admin_only_none: "Nenhum comando de barra está ativado para não administradores nesta plataforma. Peça a um administrador para adicionar você a allow_admin_from ou definir user_allowed_commands." admin_only: "⛔ /{command} é restrito a administradores aqui. {suffix}" owner_hint_env: "adicione o ID a {env_var} em {home}/.env e reinicie o gateway" owner_hint_generic: "adicione o ID à lista de usuários permitidos desta plataforma e reinicie o gateway" owner_notice: "Mensagem descartada do usuário {platform} não reconhecido {who}. Se for você ou alguém de confiança, {allowlist}; ou defina `unauthorized_dm_behavior: pair` para {platform} em {home}/config.yaml para que remetentes desconhecidos recebam um código de pareamento que você pode aprovar com `hermes pairing approve {platform} `." picker: page_info: " ({start}–{end} de {total})" clarify: hint_single: "Responda com o número, o texto da opção ou sua própria resposta." hint_multi: "Várias seleções permitidas — responda com os números separados por vírgulas ou espaços (ex.: \"1, 3\"), com o texto da opção ou com sua própria resposta." option_line: " {index}. {choice}" question: "❓ {question}" answered: "✅ respondido: {response}" cancelled: "↩️ Esclarecimento cancelado — sua mensagem será tratada como continuação." expired: "⏳ Este prompt expirou — envie uma nova solicitação." native_stream_placeholder: "💬 Aguardando sua escolha..." skip_hint: 'Responda "skip" para pular esta pergunta.' errors: rate_limited: "⏱️ O serviço do modelo de IA está limitando a taxa de requisições. Aguarde um momento e use /retry." auth_failed: "⚠️ Falha ao entrar no serviço do modelo de IA. Use /login para entrar novamente ou peça a quem administra este bot para executar `hermes doctor` no host." bad_request: "⚠️ O serviço do modelo de IA rejeitou esta requisição. Tente reformular sua mensagem ou use /model para trocar de modelo." connection_interrupted: "⚠️ A conexão com o serviço do modelo de IA foi interrompida no meio da requisição — geralmente é transitório. Use /retry para tentar novamente; se continuar acontecendo, execute `hermes doctor` no host." unreachable: "⚠️ O serviço do modelo de IA não está acessível agora — o endpoint do modelo configurado não está em execução ou está inacessível. Aguarde um momento e use /retry; se persistir, execute `hermes doctor` no host." connection_unknown: "⚠️ O Hermes não conseguiu alcançar o serviço do modelo de IA (sem mais detalhes do SDK). Use /retry para tentar novamente; se persistir, execute `hermes doctor` no host." context_overflow: "⚠️ Esta conversa ficou longa demais para eu ler de uma só vez. Use /compress para encurtar o histórico ou /new para iniciar uma nova conversa." usage_limit_resets: "⏱️ O limite de uso do serviço do modelo de IA foi atingido; ele é redefinido em {window}. Use /retry depois disso, ou /model para trocar de modelo." provider_kept_failing: "⚠️ O serviço do modelo de IA continuou falhando. Use /retry para tentar novamente ou /model para trocar de modelo. Os detalhes estão no log do gateway (`hermes logs`)." session_storage_unavailable_disk: "⚠️ O armazenamento de sessões ficou temporariamente indisponível, então este turno foi interrompido para proteger o histórico da conversa. Verifique o espaço em disco disponível e envie sua mensagem novamente." session_storage_unavailable: "⚠️ O armazenamento de sessões ficou temporariamente indisponível, então este turno foi interrompido para proteger o histórico da conversa. Sua mensagem já deve estar salva — envie-a novamente em instantes." generic_failed: "⚠️ Algo deu errado e não consegui concluir esta resposta. Use /retry para tentar novamente ou /new para iniciar uma nova conversa. Os detalhes técnicos estão no log do gateway (`hermes logs`)." interrupted_before_start: "⚠️ Sua mensagem foi interrompida antes de o processamento começar (provavelmente por um /stop recente). Envie-a novamente." processing_incomplete: "processamento incompleto" stopped_before_finishing: "⚠️ Tive que parar antes de concluir{reason}. Use /retry para tentar novamente ou /compress se esta conversa ficou muito longa." no_response: "⚠️ O processamento foi concluído, mas nenhuma resposta foi gerada. Pode ser um erro transitório — tente enviar sua mensagem novamente." previous_turn_cleanup: "⚠️ Sua mensagem não foi processada (o turno anterior ainda estava sendo finalizado). Envie-a novamente." unexpected_silence: "⚠️ O modelo retornou apenas um marcador de silêncio para uma mensagem que precisava de resposta. Tente novamente ou reformule." empty_response_model_label: "O modelo" hint_auth: " Seu login no serviço do modelo de IA expirou ou a chave de API está incorreta. Use /login aqui ou execute `{relogin}` no host." hint_quota: " O saldo ou a cota do seu serviço do modelo de IA acabou. Recarregue no site do serviço ou use /model para trocar de modelo." hint_overloaded: " O serviço do modelo de IA está temporariamente sobrecarregado. Aguarde um momento e use /retry." hint_rate_limited: " Você está sendo limitado por taxa. Aguarde um momento e tente novamente." hint_usage_limit_resets: " O limite de uso do seu plano foi atingido. Ele é redefinido em ~{hours}h." hint_usage_limit: " O limite de uso do seu plano foi atingido. Aguarde até que seja redefinido." hint_rejected: " O serviço do modelo de IA rejeitou a requisição." generic_failed_with_hint: "⚠️ Algo deu errado e não consegui concluir esta resposta.{hint}\nUse /retry para tentar novamente ou /new para iniciar uma nova conversa. Os detalhes técnicos estão no log do gateway (`hermes logs`)." history_unavailable: "⚠️ O histórico desta sessão está temporariamente indisponível, então esta mensagem não foi processada. Peça ao operador para inspecionar o state.db e reenvie quando estiver íntegro. Use /reset apenas se quiser intencionalmente iniciar uma nova conversa." no_credentials: "⚠️ Não consegui me conectar ao serviço do modelo de IA, então esta mensagem não foi processada. Use /login para entrar novamente ou /model para escolher outro modelo. Se continuar falhando, execute `hermes doctor` no host." skills: disabled: "A skill **{name}** está instalada, mas desativada.\nAtive-a com: `hermes skills config`" not_installed: "A skill **{name}** está disponível, mas não instalada.\nInstale-a com: `hermes skills install {install_name}`" disabled_for_platform: "A skill **{name}** está desativada para {platform}.\nAtive-a com: `hermes skills config`" stacked_disabled: "A(s) skill(s) **{names}** desta invocação empilhada está(ão) desativada(s) para {platform}.\nAtive-as com: `hermes skills config`" stacked_load_failed: "Falha ao carregar skills empilhadas para /{command}." gate_off: "A aprovação de gravação de skills está desativada (skills.write_approval). Ative-a com /skills approval on e depois revise as gravações pendentes aqui com /skills pending." unknown_subcommand: "Subcomando /skills desconhecido nesta plataforma. Use: pending, approve , reject , diff , approval . (Busca/instalação são somente pela CLI.)" diff_truncated: "\n… (truncado — diff completo em ~/.hermes/pending/skills/{pending_id}.json)" busy: action_restarting: "reiniciando" action_shutting_down: "encerrando" reject_model: "O agente está em execução — aguarde ou use /stop primeiro, depois troque de modelo." reject_codex_runtime: "O agente está em execução — aguarde ou use /stop primeiro, depois altere o runtime." reject_moa: "O agente está em execução — aguarde ou use /stop primeiro, depois execute /moa." drain_queued: "⏳ Gateway {action} — enfileirado para o próximo turno após ele voltar." drain_rejected: "⏳ O gateway está {action} e não está aceitando outro turno agora." drain_rejected_new_work: "⏳ O gateway está {action} e não está aceitando novo trabalho agora." demoted_tail: " — sua mensagem está na fila para quando ele terminar (use /stop para cancelar tudo)." elapsed_min: "{minutes} min decorridos" running_tool: "executando: {tool}" ack_detail_wrap: " ({detail})" ack_detail_joiner: ", " ack: "{head}{detail}{tail}" steered_subagents_head: "⏩ Redirecionado para a execução atual e seus subagentes ativos" steered_subagents_tail: ". Sua mensagem chega após a próxima chamada de ferramenta deles." steered_head: "⏩ Redirecionado para a execução atual" steered_tail: ". Sua mensagem chega após a próxima chamada de ferramenta." redirected_head: "↪ Execução atual redirecionada" redirected_tail: ". Vou ajustar com base na sua correção." subagent_working_head: "⏳ Subagente trabalhando" compressing_head: "⏳ Comprimindo contexto" queued_head: "⏳ Na fila para o próximo turno" queued_tail: ". Responderei quando a tarefa atual terminar." interrupting_head: "⚡ Interrompendo a tarefa atual" interrupting_tail: ". Responderei à sua mensagem em breve." slash_rejected: "⏳ O agente está em execução — `/{command}` não pode rodar no meio do turno. Aguarde a resposta atual ou use `/stop` primeiro." reject_goal: "O agente está em execução — use /goal status / pause / clear / wait durante a execução, ou /stop antes de definir um novo objetivo." reject_loop: "O agente está em execução — use /loop status / pause / stop durante a execução, ou /stop antes de definir um novo loop." draining_maintenance: "⏳ Este agente está sendo drenado para uma ação de manutenção e não está aceitando novos turnos agora. Ele voltará em instantes — reenvie em breve." another_turn_running: "⏳ Outro turno ainda está em execução nesta sessão. Para proteger a transcrição, esta mensagem não foi processada. Aguarde o turno ativo terminar e reenvie." behavior_queue_short: "enfileira para o próximo turno" behavior_queue_long: "As mensagens serão enfileiradas para o próximo turno enquanto o Hermes estiver ocupado." behavior_steer_short: "redireciona para a execução atual (após a próxima chamada de ferramenta)" behavior_steer_long: "As mensagens serão redirecionadas para a execução atual (após a próxima chamada de ferramenta)." behavior_interrupt_short: "interrompe a execução atual" behavior_interrupt_long: "As mensagens interromperão a execução atual enquanto o Hermes estiver ocupado." status: "**Modo de entrada quando ocupado: `{mode}`\nMensagens enquanto ocupado: _{behavior}_\nAltere com `/busy queue`, `/busy steer` ou `/busy interrupt`." unknown_mode: "Modo desconhecido `{arg}`. Use `/busy queue`, `/busy steer` ou `/busy interrupt`." save_failed: "Não foi possível salvar o modo de entrada quando ocupado na configuração. Modo inalterado." set: "Modo de entrada quando ocupado definido como **`{mode}`** (salvo).\n_{behavior}_" pause: resumed: "▶️ Retomado — novo trabalho é aceito novamente." not_paused: "O Hermes não estava pausado." reason_suffix: " (motivo: {reason})" already_paused: "⏸️ O Hermes já está pausado{suffix}. Use `/pause off` para retomar." paused: "⏸️ Pausado{suffix}. Novo trabalho de cron/kanban/gateway está em espera; o trabalho em andamento termina normalmente. Use `/pause off` para retomar." queue: usage: "Uso: /queue " queued: "Enfileirado para o próximo turno." queued_depth: " ({depth} na fila)" steer: usage: "Uso: /steer " usage_idle: "Uso: /steer (nenhum agente em execução; enviando como mensagem normal)" queued_starting: "O agente ainda está iniciando — /steer enfileirado para o próximo turno." queued_no_agent: "Nenhum agente ativo — /steer enfileirado para o próximo turno." failed: "⚠️ Falha no redirecionamento: {error}" rejected_empty: "Redirecionamento rejeitado (conteúdo vazio)." target_subagents: "execução e seu(s) subagente(s) ativo(s)" target_run: "execução" queued: "⏩ Redirecionamento enfileirado na {target} atual — chega após a próxima chamada de ferramenta: '{preview}'" suggestions: failed: "Falha no comando de sugestões: {error}" blueprint: failed: "Falha no comando de blueprint do cron: {error}" confirm: destructive_prompt: "⚠️ **Confirmar /{command}**\n\n{detail}\n\nEscolha:\n• **Aprovar uma vez** — prosseguir só desta vez\n• **Sempre aprovar** — prosseguir e silenciar esta confirmação permanentemente\n• **Cancelar** — manter a conversa atual\n\n_Alternativa em texto: responda `{prefix}approve`, `{prefix}always` ou `{prefix}cancel`._" destructive_optout: "\n\nℹ️ Os próximos /clear, /new, /reset e /undo serão executados sem confirmação. Reative com `approvals.destructive_slash_confirm: true` no config.yaml." destructive_optout_save_failed: "\n\n⚠️ Não foi possível salvar essa preferência (config.yaml não é gravável), então /clear, /new, /reset e /undo perguntarão de novo na próxima vez. Para silenciar permanentemente, defina `approvals.destructive_slash_confirm: false` no config.yaml." cancelled: "🟡 /{command} cancelado. Conversa inalterada." detail_new: "Isso inicia uma nova sessão e descarta o histórico da conversa atual." detail_undo_one: "Isso remove do histórico a última troca entre usuário e assistente." detail_undo_many: "Isso remove do histórico os últimos {count} turnos do usuário." hooks: command_blocked: "O comando `/{command}` foi bloqueado por um hook." prompt_command: start_failed: "Não foi possível iniciar /{command} — tente novamente." learn: ack_described: "Aprendendo uma skill a partir do que você descreveu…" ack_conversation: "Aprendendo uma skill a partir desta conversa…" plan: ack_task: "Planejando: {task}" ack_conversation: "Planejando a partir do contexto desta conversa…" init: start_failed: "Não foi possível iniciar /init — tente novamente." ack_update: "Atualizando AGENTS.md a partir de uma varredura do projeto…" ack_generate: "Gerando AGENTS.md a partir de uma varredura do projeto…" moa: prepare_failed: "Falha ao preparar o turno MoA." quick_command: no_output: "O comando não retornou saída." timed_out: "O comando rápido excedeu o tempo limite (30s)." error: "Erro no comando rápido: {error}" no_command: "O comando rápido '/{command}' não tem comando definido." unsupported_type: "O comando rápido '/{command}' tem um tipo não suportado (suportados: 'exec', 'alias')." no_target: "O comando rápido '/{command}' não tem destino definido." unknown_command: "Comando desconhecido `/{command}`. Digite /commands para ver os disponíveis ou reenvie sem a barra inicial para mandar como mensagem comum." session: auto_reset_notice: "◐ Sessão reiniciada após ser interrompida. Histórico da conversa limpo.\nUse /resume para navegar e restaurar uma sessão anterior.\n" auto_reset_context_exhausted: "\n\n🔄 Sessão reiniciada automaticamente — a conversa excedeu o tamanho máximo de contexto e não pôde ser comprimida mais. Sua próxima mensagem iniciará uma nova sessão." info_model: "◆ Modelo: `{model}`" info_provider: "◆ Fornecedor: {provider}" info_context: "◆ Contexto: {tokens} tokens ({source})" info_acting_model: "◆ Modelo em ação (cobrado pela execução): {provider}:{model}" info_endpoint: "◆ Endpoint: {url}" proxy: requires_aiohttp: "⚠️ O modo proxy requer aiohttp. Execute: {hint}" url_missing: "⚠️ URL do proxy não configurada (GATEWAY_PROXY_URL ou gateway.proxy_url)" http_error: "⚠️ Erro do proxy ({status}): {error}" closed_early: "⚠️ A conexão do proxy foi encerrada antes de a resposta ser concluída" connection_error: "⚠️ Erro de conexão do proxy: {error}" no_response: "(Sem resposta do agente remoto)" progress: status_fallback_long: "ainda trabalhando nisso" status_fallback_short: "um segundo" stuck_warning: "⚠️ Parece que travei (sem atividade há {minutes} min). Se nada acontecer nos próximos {remaining} min, vou desistir desta tarefa. Você pode continuar aguardando, enviar /stop para cancelá-la ou /new para iniciar uma nova conversa." timeout_header: "⏱️ Agente inativo há {minutes} min — sem chamadas de ferramenta nem respostas da API." timeout_stuck_tool: "O agente parece travado na ferramenta `{tool}` ({seconds}s desde a última atividade, {progress})." timeout_last_activity: "Última atividade: {activity} (há {seconds}s, {progress}). O agente pode ter ficado aguardando uma resposta da API." timeout_hint: "Para aumentar o limite, defina agent.gateway_timeout no config.yaml (valor em segundos, 0 = sem limite) e reinicie o gateway.\nTente novamente ou use /reset para começar do zero." working_heartbeat: "⏳ Trabalhando — {minutes} min{detail}" thinking_prefix: "💬 {text}" tool_head: "{emoji} {tool}" tool_verbose: "{emoji} {tool}({keys})\n{args}" tool_preview: "{emoji} {tool}: \"{preview}\"" tool_pending: "{emoji} {tool}..." task_status_running: "em execução" task_status_complete: "concluída" task_status_error: "erro" task_line: "- {title} - {status}" task_card_title: "Hermes está trabalhando" pairing: validity_hour: "{hours} hora" validity_hours: "{hours} horas" code_reply: "Olá! Ainda não reconheço você, então não posso responder até que a pessoa responsável por este bot aprove seu acesso.\n\nSeu código de pareamento: `{code}` (válido por {validity})\n\nSe você administra este bot, abra um terminal e execute: `{approve_cmd}`. Caso contrário, envie esse comando ao dono do bot. Após a aprovação, envie sua mensagem novamente." rate_limited: "Muitas solicitações de pareamento no momento. Aguarde alguns minutos e envie sua mensagem novamente." shutdown: action_shutting_down: "sendo encerrado" action_restarting: "sendo reiniciado" cron_interrupted: "⚠️ A tarefa agendada '{job}' foi interrompida porque o Hermes está {action}; sem resultado nesta execução. Ela rodará de novo conforme o agendamento, ou execute agora com `hermes cron run {job}` quando o Hermes voltar." notice_shutdown: "⚠️ O Hermes está sendo encerrado — sua tarefa atual será interrompida. Quando ele voltar a ficar online, envie qualquer mensagem e tentarei continuar de onde paramos." notice_restart: "⚠️ O Hermes está sendo reiniciado — sua tarefa atual será interrompida. Envie qualquer mensagem após o reinício e tentarei retomar de onde você parou." startup: handoff_thread_title: "Hermes — {title}" restarted: "♻ Gateway reiniciado com sucesso. Sua sessão continua." free_tier_line: "Inferência: nível gratuito da Nous (nous/welcome). Entre para obter mais: /login" online: "♻️ Gateway online — o Hermes voltou e está pronto." db_corrupt: "⚠️ Corrupção detectada no banco de dados de sessões. As mensagens podem não ser persistidas. Opções de recuperação:\n1. Execute `hermes {profile_arg}doctor --fix`\n2. Pare o gateway e depois recupere com:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (se indicar que é recuperável) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — a recuperação cria um instantâneo do arquivo danificado primeiro; NÃO execute `sqlite3 ... \".recover\"` no state.db em uso, um CLI sqlite3 vulnerável pode corrompê-lo ainda mais\n3. Restaure a partir de um backup em {backups_dir}/\nExecute `hermes {profile_arg}doctor` para diagnósticos sanitizados." db_fts_corrupt: "⚠️ O banco de dados de sessões relatou um erro de corrupção restrito ao índice de busca (FTS5); as tabelas de mensagens não estão danificadas. As mensagens podem não ser persistidas até o reparo: execute `hermes {profile_arg}doctor --fix` e depois reinicie o gateway. Não execute ferramentas de recuperação nem restaure um backup a menos que `hermes {profile_arg}doctor` confirme o dano." db_then_restart: "{action} Em seguida, `hermes {profile_arg}gateway restart`." db_unavailable: "⚠️ Banco de dados de sessões indisponível — as mensagens podem não ser salvas e /resume ficará vazio. Causa: {cause}. {action}" whoami: scope_dm: "DM" scope_group: "grupo/canal" header: "**Você** — {platform} ({scope})\nID de usuário: `{user_id}`\n" tier_unrestricted: "Nível: irrestrito (nenhuma lista de administradores configurada para este escopo)\nComandos de barra: todos disponíveis" tier_admin: "Nível: **administrador**\nComandos de barra: todos disponíveis" tier_user: "Nível: usuário\nComandos de barra que você pode executar: {commands}" platform: usage: "Uso: /platform [nome]\n /platform list — mostrar o status das plataformas\n /platform pause — parar de tentar novamente uma plataforma com falha\n /platform resume — recolocar na fila uma plataforma pausada" header: "**Plataformas do gateway**" connected: "Conectadas: {platforms}" reason_default: "pausada" reason_manual: "pausada via /platform pause" item_paused: " · {name} — PAUSADA ({reason}). Retome com `/platform resume {name}`." item_retrying: " · {name} — tentando novamente (tentativa {attempts})" none_failed: "Com falha/pausadas: (nenhuma)" usage_action: "Uso: /platform {action} " unknown: "Plataforma desconhecida: {name}" not_queued_pause: "{name} não está na fila de novas tentativas (está conectada ou não está ativada)." already_paused: "{name} já está pausada." paused: "✓ {name} pausada. Retome com `/platform resume {name}` ou use `hermes gateway restart` para redefinir." not_queued_resume: "{name} não está na fila de novas tentativas — nada a retomar." already_retrying: "{name} já está tentando novamente — não é preciso retomar." resumed: "✓ {name} retomada — nova tentativa no próximo ciclo do monitor." bundles: unavailable: "Subsistema de bundles indisponível: {error}" default_desc: "Carregar {count} skills" none_plain: "Nenhum bundle de skills instalado.\nCrie um com: hermes bundles create --skill --skill \nDiretório: {dir}" header_plain: "Bundles de skills ({count} instalados):" item_plain: "/{slug} — {desc} ({count} skills)" invoke_hint_plain: "Invoque um bundle com / para carregar todas as suas skills." none: "Nenhum bundle de skills instalado.\nCrie um no host com:\n `hermes bundles create --skill --skill `\nDiretório: `{dir}`" header: "**Bundles de skills** ({count} instalados):" item: "• `/{slug}` — {desc} _({count} skills)_" invoke_hint: "Invoque um bundle com `/` para carregar todas as suas skills." memory: unknown_subcommand: "Subcomando /memory desconhecido. Use: pending, approve , reject , approval ." approvals: admin_only: "Somente administradores do gateway podem alterar o modo de aprovação persistente." heartbeat: unavailable: "Heartbeats indisponíveis (sem sessão)." paused: "⏸ Heartbeat pausado: {prompt}" none_set: "Nenhum heartbeat definido." no_resume: "Nenhum heartbeat para retomar." resumed: "▶ Heartbeat retomado (a cada {interval}): {prompt}" cleared: "✓ Heartbeat removido." usage: "Uso: /heartbeat every (ex.: /heartbeat every 10m Verificar CI)\nTambém: /heartbeat status | pause | resume | clear" interval_too_small: "Intervalo muito pequeno — o mínimo é {min_seconds}s." prompt_required: "Uso: /heartbeat every — o prompt é obrigatório." invalid_prefix: "Heartbeat inválido" set: "♥ Heartbeat definido (a cada {interval}): {prompt}\nDispara como um turno normal sempre que esta sessão estiver ociosa e o intervalo tiver passado. Dura enquanto o gateway estiver em execução — use `hermes cron` para agendamentos duráveis." refine: unavailable: "Refinamento indisponível (sem sessão)." nothing_yet: "Nada para refinar ainda — envie uma mensagem primeiro." empty: "Nada para refinar ainda — a conversa está vazia." start_failed: "Falha ao iniciar /refine: {error}" focus_suffix: " (foco: {focus})" started: "⚗ Revisando esta conversa em segundo plano{focus_suffix} — qualquer atualização de memória/skill será relatada ao concluir." review: unavailable: "Revisão indisponível (sem sessão)." nothing_yet: "Nada para revisar ainda — envie uma mensagem primeiro." start_failed: "Falha ao iniciar /review: {error}" subgoal: no_goal: "Nenhum objetivo ativo. Defina um com /goal ." usage_remove: "Uso: /subgoal remove " remove_not_int: "/subgoal remove: deve ser um inteiro (índice a partir de 1)." removed: "✓ Subobjetivo {index} removido: {text}" cleared_one: "✓ {count} subobjetivo limpo." cleared_other: "✓ {count} subobjetivos limpos." none_to_clear: "Nenhum subobjetivo para limpar." added: "✓ Subobjetivo {index} adicionado: {text}" loop: unavailable: "Loops indisponíveis." no_session: "Loops indisponíveis (sem sessão ativa)." goal_defers_note: "\nObservação: um /goal ativo está conduzindo esta sessão — os despertares do loop ficam adiados até o objetivo terminar, pausar ou ser estacionado." save: no_messages: "Nenhuma mensagem armazenada encontrada para esta sessão ({session_id})." no_adapter: "Adaptador de plataforma não encontrado para enviar o documento." caption: "Exportação da sessão: {filename}" complete: "Exportação concluída." failed: "Erro ao exportar a sessão: {error}" sessions: usage_search: "Uso: `/sessions search `" all_requires_admin: "_Observação: `all` (listagem entre chats) requer um administrador configurado; mostrando apenas as sessões deste chat._" title_matching: "Sessões correspondentes a “{query}”" title_all: "Sessões" title_named: "Sessões nomeadas" codex_runtime: config_load_failed: "❌ Não foi possível carregar a configuração: {error}" topup: header: "💳 **Saldo Nous**" portal_link: "Gerencie o faturamento no portal: {url}" hint: "Recarregue e gerencie o faturamento no navegador — seu saldo é atualizado aqui depois." login: free_tier_remaining: "\nAlguns chats ainda estão no nível gratuito; use /model nesses chats para trocar." platform: whatsapp: clarify_other_title: "✏️ Outro" clarify_other_description: "Digite sua própria resposta" clarify_list_button: "Escolher" clarify_list_section: "Opções" approve_button: "✅ Aprovar" deny_button: "❌ Negar" slash_confirm_once: "✅ Aprovar uma vez" slash_confirm_always: "🔒 Sempre" slash_confirm_cancel: "❌ Cancelar" clarify_type_answer: "✏️ Digite sua resposta:" approved: "✅ Aprovado." denied: "❌ Negado." approval_expired: "⌛ Aprovação expirada — o comando não foi executado (já excedeu o tempo limite ou foi resolvido em outro lugar)." yuanbao: slow_response_notice: "Esta tarefa é um pouco complexa — ainda estou trabalhando nela, aguarde um momento..." owner_command_denied: "⚠️ {command} só está disponível para o criador no modo de chat privado" shared: truncated_suffix: "\n...(truncado)" unknown: "desconhecido" approval_expired: "⌛ Aprovação expirada — o comando não foi executado (já excedeu o tempo limite ou foi resolvido em outro lugar)." model_picker_expired: "⏳ Este seletor de modelos expirou — execute /model novamente." not_authorized: "⛔ Não autorizado." handoff: default_name: "sessão" media: image_failed: "⚠️ Não foi possível entregar a imagem anexada." video_failed: "⚠️ Não foi possível entregar o vídeo anexado." file_failed: "⚠️ Não foi possível entregar o arquivo anexado ({name})." attachment_failed: "⚠️ Não foi possível entregar o anexo." weixin: voice_as_attachment: "[mensagem de voz como anexo]" signal: batch_pacing_notice: "(Mais imagens a caminho — pausando ~{wait} pelo limite de taxa do Signal, lote {batch}/{total}.)" wait_seconds: "{count}s" wait_minutes: "{count} min" api_server: provider_auth_failed: "Falha na autenticação do fornecedor" provider_rate_limited: "Fornecedor com limite de taxa atingido" provider_error_line: "⚠️ {label}: {error}" transformed_notice: "\n\n[Resposta transformada após o streaming]\n" discord: approval: question: "Deseja que o Hermes execute este comando?" requested_command_label: "Comando solicitado:" confirm_title: "Confirmar" already_resolved: "Esta aprovação já foi resolvida~" expired: "⌛ Aprovação expirada — o comando não foi executado (já atingiu o tempo limite ou foi resolvido em outro lugar)" by_user: "{label} por {user}" resolved_once: "Aprovado uma vez" resolved_session: "Aprovado para a sessão" resolved_always: "Aprovado permanentemente" resolved_deny: "Negado" slash_confirm: already_resolved: "Este prompt já foi resolvido~" approve_once: "Aprovar uma vez" always_approve: "Aprovar sempre" cancel: "Cancelar" resolved_once: "Aprovado uma vez" resolved_always: "Aprovado sempre" resolved_cancel: "Cancelado" prompt: truncated_marker: "... [truncado]" clarify_title: "O Hermes precisa da sua resposta" clarify_hint_buttons: "Escolha uma opção abaixo ou clique em ✏️ Outro para digitar uma resposta personalizada." clarify_hint_text: "Responda neste canal com a sua resposta." default_hint: " (padrão: {default})" update_title: "A atualização precisa da sua resposta" expired_footer: "⏱ Prompt expirado — nenhuma ação realizada" already_answered: "Já respondido~" affirm: "Sim" negate: "Não" other: "✏️ Outro (digitar resposta)" clarify_already_answered: "Este prompt já foi respondido~" answered_by: "Respondido por {user}: {choice}" awaiting_typed: "Aguardando resposta digitada de {user}…" picker: title: "⚙ Configuração do modelo" select_provider: "Modelo atual: `{model}`\nFornecedor: {provider}\n\nSelecione um fornecedor:" unknown_model: "desconhecido" choice_default_title: "Escolha uma opção" provider_option: "{provider} ({count} modelos)" current: "atual" provider_placeholder: "Escolha um fornecedor..." cancel: "Cancelar" model_placeholder: "Escolha um modelo de {provider}" back: "◀ Voltar" switch_anyway: "Trocar mesmo assim" more_available: "{count} a mais disponíveis — digite `/model ` diretamente" select_model: "Fornecedor: **{provider}**\nSelecione um modelo:{extra}" already_resolved: "Já resolvido~" switching: "Trocando para `{model}`..." switching_title: "⚙ Trocando modelo" switch_error: "Erro ao trocar o modelo: {error}" switched_title: "⚙ Modelo trocado" expired_toast: "A seleção de modelo expirou." cancelled: "Seleção de modelo cancelada." expired: "⏱ Seleção expirada — nenhuma troca de modelo." choice_placeholder: "Escolha uma opção..." choice_error: "Erro ao aplicar a seleção: {error}" choice_expired: "⏱ Seleção expirada — nenhuma alteração feita." command: new: description: "Iniciar uma nova conversa" followup: "Nova conversa iniciada~" reset: description: "Redefinir sua sessão do Hermes" followup: "Sessão redefinida~" model: description: "Mostrar ou trocar o modelo" arg_name: "Nome do modelo (ex.: anthropic/claude-sonnet-4). Deixe vazio para ver o atual." reasoning: description: "Mostrar/alterar o esforço de raciocínio ou alternar sua exibição" arg_effort: "Escolha um nível, redefina a substituição ou mostre/oculte o raciocínio. Deixe vazio para ver o atual." choice_none: "none — desativar raciocínio" choice_ultra: "ultra — raciocínio máximo" choice_reset: "reset — limpar a substituição desta sessão" choice_show: "show — exibir raciocínio nas respostas" choice_hide: "hide — ocultar raciocínio das respostas" personality: description: "Definir uma personalidade" arg_name: "Nome da personalidade. Deixe vazio para listar as disponíveis." retry: description: "Tentar novamente sua última mensagem" followup: "Tentando novamente~" undo: description: "Remover a última troca de mensagens" status: description: "Mostrar o status da sessão do Hermes" followup: "Status enviado~" stop: description: "Parar o agente Hermes em execução" followup: "Parada solicitada~" steer: description: "Injetar uma mensagem após a próxima chamada de ferramenta (sem interromper)" arg_prompt: "Texto a injetar no próximo resultado de ferramenta do agente" plan: description: "Escrever um plano de implementação em markdown (sem execução)" arg_task: "O que planejar. Deixe vazio para inferir da conversa." compress: description: "Comprimir o contexto da conversa" title: description: "Definir ou mostrar o título da sessão" arg_name: "Título da sessão. Deixe vazio para mostrar o atual." resume: arg_name: "Nome da sessão a retomar. Deixe vazio para listar as sessões." usage: description: "Mostrar o uso de tokens desta sessão" help: description: "Mostrar os comandos disponíveis" insights: arg_days: "Número de dias a analisar (padrão: 7)" reload_skills: description: "Reexaminar ~/.hermes/skills/ em busca de skills novas ou removidas" voice: description: "Alternar o modo de resposta por voz" arg_mode: "Modo de voz: join, channel, leave, on, tts, off ou status" choice_join: "join — entrar no seu canal de voz" choice_channel: "channel — entrar no seu canal de voz (alias)" choice_leave: "leave — sair do canal de voz" choice_mode_on: "on — responder por voz a mensagens de voz" choice_tts: "tts — responder por voz a todas as mensagens" choice_mode_off: "off — somente texto" choice_status: "status — mostrar o modo atual" update: followup: "Atualização iniciada~" restart: description: "Reiniciar o gateway do Hermes de forma controlada" followup: "Reinício solicitado~" approve: arg_scope: "Opcional: 'all', 'session', 'always', 'all session', 'all always'" deny: description: "Negar um comando perigoso pendente" arg_scope: "Opcional: 'all' para negar todos os comandos pendentes" thread: description: "Criar um novo tópico e iniciar nele uma sessão do Hermes" arg_name: "Nome do tópico" arg_message: "Primeira mensagem opcional a enviar ao Hermes no tópico" arg_auto_archive: "Arquivar automaticamente em minutos (60, 1440, 4320, 10080)" error_unknown: "erro desconhecido" failed: "Falha ao criar o tópico: {error}" created: "Tópico criado {link}" error_name_required: "O nome do tópico é obrigatório." error_invalid_archive: "auto_archive_duration deve ser um destes valores: {allowed}." error_no_channel: "Não foi possível resolver o canal atual do Discord." error_dm_not_supported: "Tópicos do Discord só podem ser criados em canais de texto de servidor, não em DMs." error_no_parent: "Não foi possível determinar um canal de texto pai para o novo tópico." error_both_failed: "O Discord rejeitou a criação direta do tópico e a alternativa também falhou. Erro direto: {direct_error}. Erro da alternativa: {fallback_error}" queue: description: "Enfileirar um prompt para o próximo turno (não interrompe)" arg_prompt: "O prompt a enfileirar" followup: "Enfileirado para o próximo turno." bg: arg_prompt: "O prompt a executar em segundo plano" followup: "Tarefa em segundo plano iniciada~" btw: description: "Fazer uma pergunta paralela sobre a conversa atual" arg_question: "A pergunta paralela a responder sem interromper" followup: "Pergunta paralela despachada~" skill: description: "Executar uma skill do Hermes" arg_name: "Qual skill executar" arg_args: "Argumentos opcionais para a skill" unknown: "Skill desconhecida: `{name}`. Comece a digitar para ver sugestões de preenchimento automático." auto_args_description: "Argumentos: {args_hint}" auto_description_fallback: "Executar /{name}" limits: response_truncated: "⚠️ **Resposta truncada** — esta resposta excedeu o limite de entrega ({max_messages} mensagens). {dropped_chars} caracteres não foram entregues; a resposta completa está nos logs da sessão." forum: default_title: "Nova publicação" voice: ack_1: "Deixe-me verificar isso." ack_2: "Um momento." ack_3: "Verificando isso agora." ack_4: "Só um segundo." ack_5: "Deixa comigo." left_inactivity: "Saí do canal de voz (tempo limite de inatividade)." security: unauthorized_slash_alert: "⚠️ Tentativa não autorizada de comando slash no Discord\nUsuário: {user_name} ({user_id})\nCanal: {chan_id} (guild {guild_id})\nComando: {command_text}\nMotivo: {reason}" thread: seed_message: "🧵 Tópico criado pelo Hermes: **{name}**" default_name: "Hermes" handoff_seed: "🧵 Transferência do Hermes: **{name}**" auto_create_failed: "⚠️ O Hermes não conseguiu criar um tópico do Discord para esta mensagem, então a solicitação não foi processada. Tente novamente." auto_create_failed_generic: "A solicitação não foi processada. Tente novamente." media: upload_too_large: "⚠️ Não foi possível anexar `{filename}` — {size_mb} MB excede o limite de envio de {limit_mb} MB do Discord para este canal. Comprima o arquivo ou compartilhe um link." image_skipped_too_large: "⚠️ `{filename}` ignorado — {size_mb} MB excede o limite de envio de {limit_mb} MB do Discord." telegram: approval: action_once: "✅ Permitir uma vez" action_session: "✅ Sessão" action_always: "✅ Sempre" action_deny: "❌ Negar" toast_invalid_data: "Dados de aprovação inválidos." toast_already_resolved: "Esta aprovação já foi resolvida." resolved_once: "✅ Aprovado uma vez" resolved_session: "✅ Aprovado para a sessão" resolved_always: "✅ Aprovado permanentemente" resolved_deny: "❌ Negado" resolved_generic: "Resolvido" resolved_by_user: "{label} por {user}" expired: "⌛ Aprovação expirada" expired_detail: "{label} — nenhum comando estava aguardando. Ele já atingiu o tempo limite (e foi negado) ou foi resolvido em outro lugar." slash_confirm: approve_once: "✅ Aprovar uma vez" always_approve: "🔒 Aprovar sempre" cancel: "❌ Cancelar" already_resolved: "Este prompt já foi resolvido." resolved_once: "✅ Aprovado uma vez" resolved_always: "🔒 Aprovar sempre" resolved_cancel: "❌ Cancelado" picker: expired_rerun: "Seletor expirado — execute o comando novamente." invalid_selection: "Seleção inválida." expired: "Seletor expirado." apply_error: "Erro ao aplicar a seleção: {error}" prev: "◀ Anterior" next: "Próximo ▶" back: "◀ Voltar" cancel: "✗ Cancelar" more_available: "{count} a mais disponíveis — digite `/model ` diretamente" title: "Configuração do modelo" provider_label: "Fornecedor: {provider}" select_model: "Selecione um modelo:" current_model: "Modelo atual: {model}" select_provider: "Selecione um fornecedor:" unknown_model: "desconhecido" provider_family: "Família do fornecedor: {family}" invalid_model_index: "Índice de modelo inválido." switch_error: "Erro ao trocar o modelo: {error}" switch_failed: "Falha na troca." switched: "Modelo trocado!" invalid_page: "Página inválida." expired_model: "Seletor expirado — use /model novamente." provider_not_found: "Fornecedor não encontrado." switch_anyway: "Trocar mesmo assim" confirm_selection: "Confirmar seleção de modelo" group_not_found: "Grupo não encontrado." cancelled: "Seleção de modelo cancelada." prompt: default_hint: " (padrão: {default})" update_header: "A atualização precisa da sua resposta:" affirm: "✓ Sim" negate: "✗ Não" other: "✏️ Outro (digitar resposta)" expired_toast: "⚠️ Este prompt expirou — use /retry." expired_body: "⚠️ Esta pergunta expirou ou a sessão foi redefinida — use /retry." type_answer: "✏️ Digite sua resposta no chat." awaiting_typed: "Aguardando resposta digitada de {user}…" invalid_choice: "Escolha inválida." update_sent: "'{answer}' enviado ao processo de atualização." update_answered: "Prompt de atualização respondido: {answer}" affirm_word: "Sim" negate_word: "Não" media: download_failed: "⚠️ Não foi possível baixar seu {kind}{name} ({error}). Tente enviar novamente." named_suffix: " ({name})" kind_attachment: "anexo" kind_photo: "foto" kind_voice: "mensagem de voz" kind_audio: "arquivo de áudio" kind_video: "arquivo de vídeo" gmail_triage: done_send: "✓ rascunho enviado" done_archive: "✓ arquivado" done_draft: "✓ resposta rascunhada" done_spam: "✓ marcado como spam" done_mute: "✓ silenciado" done_mute_domain: "✓ domínio silenciado" done_trust: "✓ confiável" done_trust_domain: "✓ domínio confiável" done_vip: "✓ marcado como VIP" done_vip_domain: "✓ domínio marcado como VIP" invalid_data: "Dados de gmail-triage inválidos." unknown_verb: "Verbo desconhecido: {verb}" script_missing: "❌ {script} ausente" exit_code: "saída {code}" failed: "❌ {verb} falhou: {detail}" timed_out: "❌ {verb} atingiu o tempo limite" error: "❌ erro em {verb}: {error}" appended_by: "— {label} por {user}" user_fallback: "Usuário" install_hint: "Execute `hermes setup` para instalar o suporte ao Telegram." slack: approval: fallback_text: "⚠️ Aprovação de comando necessária: {command}" resolved_once: "✅ Aprovado uma vez por {user}" resolved_session: "✅ Aprovado para a sessão por {user}" resolved_always: "✅ Aprovado permanentemente por {user}" resolved_deny: "❌ Negado por {user}" confirm: default_title: "Confirmar" approve_once: "Aprovar uma vez" always_approve: "Aprovar sempre" cancel: "Cancelar" resolved_always: "🔒 Aprovado sempre por {user}" resolved_cancel: "❌ Cancelado por {user}" picker: more_available: "\n*{count} a mais disponíveis — digite `/model ` diretamente*" provider_header: "*⚙ Configuração do modelo*\nModelo atual: `{model}`\nFornecedor: {provider}\n\nSelecione um fornecedor:{extra}" model_header: "*⚙ Configuração do modelo*\n\nFornecedor: *{provider}*\nSelecione um modelo:{extra}" choose_provider: "Escolha um fornecedor…" choose_model: "Escolha um modelo de {provider}…" cancel: "Cancelar" back: "◀ Voltar" fallback_provider: "⚙ Configuração do modelo — selecione um fornecedor" fallback_model: "⚙ Configuração do modelo — {provider}" cancelled: "❌ Seleção de modelo cancelada." no_models_for_provider: "Nenhum modelo disponível para `{provider}`." switching: "⚙ Trocando para `{model}`…" switch_failed: "❌ Falha ao trocar o modelo: {error}" switch_failed_header: "⚙ Falha na troca de modelo" switched_header: "⚙ Modelo trocado" clarify: option_n: "Opção {n}" choice_n: "escolha {n}" other: "✏️ Outro…" expired: "⏳ Este prompt expirou — envie uma nova solicitação. (por {user})" awaiting: "✏️ Aguardando resposta digitada de {user}…" resolved: "✅ {user}: {choice}" feedback: good: "Boa resposta" good_a11y: "Enviar feedback positivo sobre esta resposta" bad: "Resposta ruim" bad_a11y: "Enviar feedback negativo sobre esta resposta" status: thinking: "está pensando..." still_working: "ainda trabalhando… ({elapsed})" task_card: title: "O Hermes está trabalhando" slash: reply_truncated: "\n\n_[Resposta truncada: {count} parte(s) a mais excederam o limite de resposta efêmera do Slack.]_" running: "Executando `/{command}`…" handoff: seed: ":thread: Transferência do Hermes — *{name}*" matrix: handoff: default_name: "Sessão do Hermes" media: image_download_failed: "Não consegui baixar e enviar a imagem para o Matrix. A URL de origem não foi exibida porque pode conter tokens privados." approval: typed_hint_once: "Responda `!approve` para executar uma vez, ou `!deny` para cancelar." typed_hint_session: "Responda `!approve session` para aprovar este padrão durante a sessão, `!approve` para executar uma vez, ou `!deny` para cancelar." typed_hint_always: "Responda `!approve session` para aprovar este padrão durante a sessão, `!approve always` para aprovar permanentemente, `!approve` para executar uma vez, ou `!deny` para cancelar." legend_intro: "Você também pode clicar na reação para aprovar:" legend_once: "✅ = aprovar uma vez" legend_session: "🌀 = aprovar para esta sessão" legend_always: "♾️ = aprovar sempre" legend_deny: "❎ = negar" invalid_reaction: "Essa reação não é válida para esta solicitação de aprovação." expired: "Esta solicitação de aprovação expirou. Execute o comando novamente se ainda quiser aprová-lo." picker: no_models: "Nenhum modelo autenticado está disponível para esta sessão." title: "⚙ **Configuração do modelo**" current_model: "Modelo atual: `{model}`" provider: "Fornecedor: {provider}" react_model: "Reaja para escolher um modelo:" react_choice: "Reaja para escolher." current_suffix: "{label} ← atual" invalid_model_reaction: "Essa reação não corresponde a nenhum dos modelos disponíveis." invalid_choice_reaction: "Essa reação não corresponde a nenhuma das opções disponíveis." verb_switch_model: "trocar de modelo" verb_apply_selection: "aplicar a seleção" failed: "Falha ao {action}: {error}" reaction: unauthorized: "Somente um usuário autorizado do Matrix pode usar estes controles." not_requester: "Somente o usuário que solicitou esta ação pode usar estes controles." feishu: approval: action_session: "Sessão" action_always: "Sempre" resolved_once: "Aprovado uma vez" resolved_session: "Aprovado para a sessão" resolved_always: "Aprovado permanentemente" resolved_deny: "Negado" resolved_fallback: "Resolvido" resolved_by_user: "{icon} **{label}** por {user}" update_prompt: title: "☤ A atualização precisa da sua resposta" default_hint: "\n\nPadrão: `{default}`" answer_yes: "✓ Sim" answer_no: "✗ Não" word_yes: "Sim" word_no: "Não" answered_title: "{icon} Pergunta da atualização respondida: {answer}" answered_by: "Respondido por **{user}**" media: gif_downgraded: "[GIF convertido em arquivo]" gif_downgraded_caption: "[GIF convertido em arquivo]\n{caption}" google_chat: clarify: other_button: "Outra / digitar resposta" header: "Pergunta" question: "❓ {question}" typing: thinking: "Hermes está pensando…" interrupted: "(interrompido)" no_reply: "(sem resposta)" attachment_fallback: header: "⚠️ Não consegui anexar **{filename}**." explain: "O Google Chat só permite anexar arquivos quando o bot tem sua permissão explícita (OAuth do usuário). É um consentimento único feito a partir deste chat." activate: "**Para ativar:** envie `/setup-files` e siga as instruções." host_path: "Enquanto isso, o arquivo está no host: `{path}`" setup_files: not_configured: "🔧 A entrega nativa de anexos **não está configurada**.\n**Passo 1 (uma única vez, no host):** crie credenciais de cliente OAuth em https://console.cloud.google.com/apis/credentials → *Criar credenciais* → *ID do cliente OAuth* → *App para computador*. Baixe o JSON. Em seguida, no host, execute:\n```\npython -m plugins.platforms.google_chat.oauth --client-secret /path/to/client_secret.json\n```\n**Passo 2:** volte aqui e envie `/setup-files start`." start_instructions: "1. Abra esta URL no navegador e autorize:\n{auth_url}\n\n2. Depois de clicar em *Permitir*, o navegador não conseguirá carregar `http://localhost:1/?...&code=...`. Isso é esperado.\n\n3. Copie a URL completa que falhou na barra de endereços do navegador e cole-a aqui como: `/setup-files ` (ou apenas o valor de `code=...`).\n\nDica: a URL contém sua concessão de acesso — mantenha-a privada." start_failed: "❌ Não foi possível gerar a URL do OAuth. Verifique os logs do gateway e confirme que o client_secret.json é válido." exchange_failed: "❌ Falha na troca do token. O código pode ter expirado ou a URL está malformada. Envie `/setup-files start` para obter uma nova URL do OAuth." revoke_completed: "Revogação concluída (alguns passos podem ter sido pulados)." revoked: "Revogado." helper_error: "❌ Erro: {error}" revoke_error: "❌ Erro ao revogar: {error}" who_shared: "compartilhado (legado)" active: "✅ A entrega nativa de anexos está **ativa** para `{who}`.\nToken: `{token_path}`\nEnvie `/setup-files revoke` para desativar." not_authorized_yet: "🔧 As credenciais de cliente estão armazenadas, mas você ainda não autorizou. Envie `/setup-files start` para começar." no_client_credentials: "⚠️ Nenhuma credencial de cliente armazenada para este perfil. Envie `/setup-files` (sem argumentos) para ver as instruções de configuração." done_output: "✅ Concluído.\n```\n{output}\n```" authorized: "✅ Autorizado! A entrega nativa de anexos agora está ativa. Experimente me pedir para enviar um PDF." exchanged_not_loaded: "⚠️ O token foi trocado, mas o gateway não conseguiu carregar as novas credenciais em memória. Reinicie o gateway e o token em `{token_path}` será carregado.\nSaída do auxiliar:\n```\n{output}\n```" teams: approval: resolved_once: "✅ Permitido (uma vez)" resolved_session: "✅ Permitido (sessão)" resolved_always: "✅ Sempre permitido" resolved_deny: "❌ Negado" unknown_action: "Ação desconhecida." requires_allowlist: "⛔ Os botões de aprovação exigem que TEAMS_ALLOWED_USERS esteja configurado." summary: title: "Reunião {meeting_id}" title_fallback: "resumo" heading: "Resumo" summary_line: "Resumo: {summary}" empty: "Nenhum resumo disponível." none_item: "Nenhum" key_decisions: "Decisões principais" action_items: "Itens de ação" risks: "Riscos" line: pending: still_thinking: "🤔 Ainda pensando. Toque abaixo para buscar a resposta quando estiver pronta." button_label: "Obter resposta" delivered: "Já respondido ✅" interrupted: "A execução foi interrompida antes de concluir." expired: "Essa solicitação expirou — envie sua mensagem novamente." standalone: attachments_not_deliverable: "[{count} anexo(s) gerado(s); não é possível entregar a partir do cron]" wecom: media: kind_image: "Imagem" kind_video: "Vídeo" kind_voice: "Mensagem de voz" file_too_large: "O tamanho do arquivo, {size_mb}MB, excede o limite de 20MB do WeCom e não pode ser enviado. Tente comprimir o arquivo ou reduzir seu tamanho." voice_format_downgraded: "O formato de voz {content_type} não é suportado (o WeCom só aceita AMR); enviado como arquivo." size_downgraded: "{label} com {size_mb}MB excede o limite de {cap}; enviado como arquivo." email: image_line: "Imagem: {url}" standalone_subject: "Hermes Agent" dingtalk: emotion: thinking: "🤔Pensando" done: "🥳Concluído" irc: quit_message: "Hermes Agent encerrando" standalone_quit: "entregue" homeassistant: notification_title: "Hermes Agent" relay: confirm_approve_once: "Aprovar uma vez" confirm_always_approve: "Aprovar sempre" confirm_cancel: "Cancelar" prompt_other: "✏️ Outro (digitar resposta)" prompt_expired: ⌛ Essa solicitação não está mais aguardando resposta. Envie sua resposta como uma mensagem normal. slash: approve: description: "Aprovar um comando perigoso pendente" bg: description: "Executar um prompt em uma sessão separada em segundo plano" insights: description: "Mostrar insights e análises de uso" reload_mcp: description: "Recarregar os servidores MCP a partir da configuração" resume: description: "Retomar uma sessão nomeada anteriormente" sethome: description: "Definir este chat como canal inicial" update: description: "Atualizar o Hermes Agent para a versão mais recente" category: session: "Sessão" configuration: "Configuração" info: "Informações" tools_skills: "Ferramentas e skills" plugins: "Plugins" exit: "Sair" context: "Contexto" background_automation: "Segundo plano e automação" shared: usage_suffix: "{description} (uso: /{name} {args_hint})" alias_for: "{description} (alias de /{name})" alias_note: " (alias: {aliases})" slack_alias_for: "Alias de /{name} — {description}" plugin_default_desc: "Executar /{name}" plugin_command_desc: "Comando de plugin" hermes: description: "Falar com o Hermes ou executar um subcomando" start: description: "Reconhecer pings de início da plataforma sem responder" new: description: "Iniciar uma nova sessão (novo ID de sessão + histórico)" topic: description: "Ativar ou inspecionar sessões por tópico em DMs do Telegram" clear: description: "Limpar a tela e iniciar uma nova sessão" redraw: description: "Forçar uma repintura completa da interface (recupera de desvios do terminal)" history: description: "Mostrar o histórico da conversa" save: description: "Exportar a conversa atual (/save sem argumentos mostra o uso)" retry: description: "Tentar novamente a última mensagem (reenviar ao agente)" prompt: description: "Compor seu próximo prompt no $EDITOR (markdown) e enviá-lo" undo: description: "Voltar N turnos do usuário e reenviar o prompt (padrão 1)" title: description: "Definir um título para a sessão atual" handoff: description: "Transferir esta sessão para uma plataforma de mensagens (Telegram, Discord etc.)" branch: description: "Ramificar a sessão atual (novo tópico no Discord/Telegram/Slack/Matrix; --here permanece aqui)" worktree: description: "Mostrar, listar, criar ou limpar worktrees git isolados" compress: description: "Comprimir o contexto da conversa (adicione 'here [N]' para manter os N turnos recentes; --preview mostra o que aconteceria)" rollback: description: "Listar ou restaurar pontos de verificação do sistema de arquivos (as restaurações preservam suas edições manuais; --all sobrescreve)" snapshot: description: "Criar ou restaurar instantâneos da configuração/estado do Hermes" export: description: "Exportar um perfil (configuração, skills, tema) para um arquivo compartilhável" import: description: "Importar um arquivo de perfil compartilhado como novo perfil" stop: description: "Encerrar todos os processos em segundo plano em execução" pause: description: "Pausar todo trabalho novo globalmente (parada de emergência); '/pause off' retoma" deny: description: "Negar um comando perigoso pendente (opcionalmente com um motivo)" btw: description: "Fazer uma pergunta paralela sobre a conversa atual sem interrompê-la" agents: description: "Mostrar agentes ativos e tarefas em execução" journey: description: "Abrir a linha do tempo da jornada de aprendizado" queue: description: "Enfileirar um prompt para o próximo turno, ou list/edit/rm/move/clear dos prompts na fila" steer: description: "Injetar uma mensagem após a próxima chamada de ferramenta sem interromper" goal: description: "Definir um objetivo permanente no qual o Hermes trabalha ao longo dos turnos até alcançá-lo" heartbeat: description: "Definir um prompt recorrente que reentra nesta sessão quando ociosa" refine: description: "Revisar esta conversa agora e salvar lições na memória/skills" review: description: "Iniciar um subagente independente para revisar o trabalho recém-discutido (PR, código, docs)" loop: description: "Reexecutar um prompt em intervalo recorrente nesta sessão" plan: description: "Escrever um plano de implementação em markdown em .hermes/plans/ sem executar nada" moa: description: "Executar um prompt com a predefinição padrão de Mixture of Agents e depois restaurar seu modelo" subgoal: description: "Adicionar ou gerenciar critérios extras no objetivo ativo" status: description: "Mostrar informações de sessão, modelo, tokens e contexto" egress: description: "Mostrar o status do proxy de saída do Docker" context: description: "Mostrar visão detalhada da janela de contexto com medidor de uso, divisão por categoria, estatísticas de compressão e vazão" whoami: description: "Mostrar seu nível de acesso aos comandos de barra (admin / user)" profile: description: "Mostrar o nome do perfil ativo e o diretório home" sessions: description: "Navegar e retomar sessões anteriores" config: description: "Mostrar a configuração atual" model: description: "Trocar de modelo (escopo da sessão; --global para persistir)" codex-runtime: description: "Alternar o runtime codex app-server para modelos OpenAI/Codex" personality: description: "Definir uma personalidade predefinida" statusbar: description: "Alternar a barra de status de contexto/modelo" battery: description: "Alternar um indicador de bateria colorido na barra de status" timestamps: description: "Alternar carimbos de hora [HH:MM] nas mensagens e no /history" diff: description: "Mostrar alterações do git no diretório de trabalho" verbose: description: "Alternar a exibição do progresso das ferramentas: off -> new -> all -> verbose" focus: description: "Alternar a visão focada — mostrar apenas seu prompt e a resposta final" footer: description: "Alternar o rodapé de metadados de runtime do gateway nas respostas finais" yolo: description: "Alternar o modo YOLO (pular todas as aprovações de comandos perigosos)" approvals: description: "Mostrar ou definir o modo persistente de aprovação de comandos perigosos" reasoning: description: "Gerenciar o esforço e a exibição do raciocínio" fast: description: "Modo rápido — OpenAI Priority Processing / Anthropic Fast Mode (normal/fast/auto/cold/ultrafast)" skin: description: "Mostrar ou alterar a skin/tema de exibição" indicator: description: "Escolher o estilo do indicador de ocupado da TUI" voice: description: "Alternar o modo de voz" wake: description: "Alternar a escuta da palavra de ativação 'Hey Hermes'" busy: description: "Controlar como as mensagens se comportam enquanto o Hermes está trabalhando" tools: description: "Gerenciar ferramentas: /tools [list|disable|enable] [nome...]" toolsets: description: "Listar os conjuntos de ferramentas disponíveis" skills: description: "Buscar, instalar, inspecionar ou gerenciar skills" memory: description: "Revisar gravações de memória pendentes / alternar a barreira de aprovação" bundles: description: "Listar pacotes de skills (aliases / para várias skills)" pet: description: "Alternar ou adotar um mascote do petdex (/pet, /pet list, /pet )" hatch: description: "Gerar um novo pet do petdex a partir de uma descrição" learn: description: "Aprender uma skill reutilizável a partir de qualquer coisa que você descrever (diretórios, URLs, este chat, notas)" init: description: "Gerar ou atualizar as instruções de projeto AGENTS.md a partir de uma varredura do repositório" cron: description: "Gerenciar tarefas agendadas" suggestions: description: "Revisar automações sugeridas (aceitar/descartar)" blueprint: description: "Configurar uma automação a partir de um modelo de blueprint" curator: description: "Manutenção de skills em segundo plano (status, run, pin, archive, list-archived)" kanban: description: "Quadro de colaboração multiperfil (tarefas, links, comentários)" reload: description: "Recarregar as variáveis do .env na sessão em execução" reload-mcp: description: "Recarregar os servidores MCP a partir da configuração" reload-skills: description: "Verificar novamente ~/.hermes/skills/ em busca de skills instaladas ou removidas" browser: description: "Conectar as ferramentas de navegador ao seu navegador da família Chromium via CDP, ou mudar para o modo Browser Use" plugins: description: "Listar os plugins instalados e seu status" commands: description: "Navegar por todos os comandos e skills (paginado)" help: description: "Mostrar os comandos disponíveis (/help skills lista comandos de skills, /help filtra)" palette: description: "Abrir a paleta de comandos com busca difusa (também Ctrl+P)" restart: description: "Reiniciar o gateway de forma controlada após concluir as execuções ativas" usage: description: "Mostrar uso de tokens e limites de taxa; `reset` resgata um reset de limite do Codex acumulado" subscription: description: "Ver seu plano Nous e alterá-lo no navegador" login: description: "Entrar com uma conta Nous (mantém seus conectores)" topup: description: "Mostrar seu saldo Nous e gerenciar a cobrança no portal" platforms: description: "Mostrar o status do gateway/plataformas de mensagens" platform: description: "Pausar, retomar ou listar uma plataforma do gateway com falha" copy: description: "Copiar a última resposta do assistente para a área de transferência" paste: description: "Anexar a imagem da sua área de transferência" image: description: "Anexar um arquivo de imagem local ao seu próximo prompt" version: description: "Mostrar a versão do Hermes Agent" debug: description: "Enviar relatório de depuração (informações do sistema + logs) e obter links compartilháveis" quit: description: "Sair da CLI (use --delete para também remover o histórico da sessão)" cli: billing: load_failed: "{label}: {error}" load_failed_label: "Não foi possível carregar a cobrança" not_logged_in: "Não conectado ao Nous Portal." run_portal_then: "Execute `hermes portal` para entrar e, em seguida, {cmd}." org_line: "Org: {org}" org_line_role: "Org: {org} · {role}" bar_plan_label: "plano" bar_topup_label: "recarga" bar_pct_used: " · {pct}% usado" bar_plan: "{label}[{bar}] ${remaining} restantes de ${total}{pct}" bar_topup: "{label}[{bar}] ${remaining} · nunca expira" total_spendable: "Total disponível para gastar: ${amount}" one_time_setup: "! Configuração única" allow_remote_spending_title: "Permitir Gastos Remotos" allow_remote_spending_detail: "Abre o navegador para autorizar este terminal." choice_allow_remote_spending: "Permitir Gastos Remotos" desc_allow_remote_spending: "abrir o navegador para autorizar" choice_not_now: "Agora não" desc_not_now: "cancelar" opening_browser_remote_spending: "Abrindo o navegador para permitir Gastos Remotos…" couldnt_allow_remote_spending: "Não foi possível permitir Gastos Remotos: {error}" remote_spending_allowed: "Gastos Remotos permitidos." portal_line: "Portal: {url}" open_this_url: "Abra esta URL: {url}" manage_on_portal_url: "Gerenciar no portal: {url}" no_manage_url: "Nenhuma URL de gerenciamento disponível — seu portal está configurado?" stepup_stale: "Gastos Remotos ainda não estão ativos para este terminal — a autorização não foi aplicada. Tente novamente ou faça esta alteração no portal." something_went_wrong: "Algo deu errado." under_five: "menos de $5" plan_free: "Gratuito" renews_suffix: " · renova em {date}" plan_line: "Plano: {plan}{renews}" free_models_only_hint: "> Gratuito · apenas modelos gratuitos. Execute /subscription para acessar modelos pagos." low_balance_usage: "! Saldo baixo · {amount} restantes. Execute /topup ou /subscription." usage_cta: "Execute /subscription para mudar de plano · /topup para adicionar ao seu saldo" choice_cancel: "Cancelar" choice_back: "Voltar" choice_go_back: "Voltar" choice_close: "Fechar" desc_do_nothing: "não fazer nada" desc_do_not_charge: "não cobrar" choice_manage_on_portal: "Gerenciar no portal" desc_open_billing_page: "abrir a página de cobrança no navegador" topup_header: "Recarga · saldo {balance}" topup_title: "Recarregue seu saldo" auto_reload_on_line: "Recarga automática: ativada — abaixo de {threshold} → recarregar até {reload_to}" auto_reload_off_line: "Recarga automática: desativada" card_line: "Cartão: {card}" no_saved_card_add_funds_hint: "Nenhum cartão salvo — “Adicionar fundos” orienta você a cadastrar um." actions_require_admin: "Ações de cobrança exigem um administrador/proprietário da org." remote_spending_off_for_org: "Gastos remotos estão desativados para esta org." killswitch_reason_overview: "Um administrador de cobrança pode ativá-los na página Hermes Agent do portal para adicionar fundos aqui." killswitch_reason_buy: "Um administrador de cobrança pode ativá-los na página Hermes Agent do portal antes de adicionar fundos." add_funds_now_hint: "Adicionar fundos agora — uma única cobrança, adicionada ao seu saldo hoje." refill_when_low_amounts: "Recarregar quando baixo — cobra {reload_to} automaticamente quando seu saldo cai abaixo de {threshold}." refill_when_low_generic: "Recarregar quando baixo — cobra seu cartão automaticamente quando seu saldo cai abaixo do valor definido." choice_add_funds: "Adicionar fundos" desc_add_funds: "uma única cobrança, adicionada ao seu saldo hoje" choice_auto_reload: "Recarga automática" desc_auto_reload: "recarregar automaticamente quando o saldo estiver baixo" choice_monthly_limit: "Limite mensal" desc_monthly_limit: "mostrar o teto de gastos mensal (somente leitura)" cancelled: "Cancelado." cancelled_yellow: "🟡 Cancelado." cancelled_no_funds: "Cancelado. Nenhum fundo adicionado." no_portal_url: "Nenhuma URL do portal disponível." complete_in_browser: "Conclua as alterações de cobrança no navegador." add_card_first: "Adicione um cartão primeiro" add_card_title: "Adicionar um cartão" no_saved_card: "Nenhum cartão salvo." no_saved_card_short: "Nenhum cartão salvo" no_saved_card_lower: "nenhum cartão salvo" add_card_once_hint: "Adicione um cartão uma única vez na página de cobrança do portal — depois disso, você pode recarregar direto do terminal." add_card_then_recheck: "Adicione o cartão na página de cobrança e depois escolha “verificar novamente” aqui." card_found_continuing: "Cartão encontrado: {card} — continuando." still_no_card: "Ainda não há cartão salvo — conclua o cadastro no portal e verifique novamente." choice_add_card_on_portal: "Adicionar um cartão no portal" desc_add_card_on_portal: "abre a página de cobrança no navegador" choice_recheck_card: "Já adicionei — verificar novamente" desc_recheck_card: "verificar o cartão de novo e continuar" add_funds: "Adicionar fundos" presets: "Predefinições: {presets}" run_interactive_to_purchase: "Execute isto na CLI interativa para concluir uma compra." desc_one_time_purchase: "compra única de créditos" choice_custom_amount: "Valor personalizado…" desc_custom_amount: "informe seu próprio valor" payment_line: "Pagamento: {card}" amount_prompt: "Valor (USD):" invalid_selection: "🔴 Seleção inválida." confirm_purchase: "Confirmar compra" total_line: "Total: {amount}" portal_card_will_be_charged: "Seu cartão salvo no portal será cobrado." consent_charge: "Ao confirmar, você permite que a Nous Research cobre seu cartão." choice_pay_now: "Pagar {amount} agora" desc_submit_charge: "enviar a cobrança" desc_manage_card_billing: "gerenciar seu cartão / cobrança no navegador" run_interactive_to_confirm: "Execute na CLI interativa para confirmar uma compra." pay_question: "Pagar {amount}?" no_charge_id: "Nenhum id de cobrança retornado; verifique o portal." charge_submitted: "Cobrança enviada — confirmando a liquidação…" could_not_check_charge: "🔴 Não foi possível verificar a cobrança: {error}" added_to_balance: "✓ {amount} adicionados ao seu saldo." still_processing: "🟡 Ainda processando após 5 minutos — isto é um tempo limite, não uma falha. Verifique /billing ou o portal em breve." charge_failed_authentication_required: "🔴 Seu banco exige verificação (3DS). Conclua-a no portal para finalizar esta compra." charge_failed_payment_method_expired: "🔴 Seu cartão expirou. Atualize-o no portal." charge_failed_card_declined: "🔴 Seu cartão foi recusado. Tente outro cartão no portal." charge_failed_generic: "🔴 A cobrança não foi concluída ({reason})." charge_error_no_payment_method: "💳 Nenhum cartão salvo — recarregue e gerencie a cobrança no portal." charge_error_remote_spending_disabled: "Gastos remotos estão desativados para esta conta — um administrador de cobrança pode ativá-los na página Hermes Agent do portal." charge_error_role_required: "Adicionar fundos exige um administrador/proprietário da org. Peça a um administrador ou gerencie no portal." charge_error_idempotency_conflict: "🔴 Essa chave de cobrança já foi usada para um valor diferente. Inicie uma nova recarga." revoked_by_admin: "Um administrador interrompeu os gastos deste terminal." revoked_by_you: "Você interrompeu os gastos deste terminal." revoked_reconnect: "🔴 {who} Reconecte para restaurar — execute `hermes portal` para autorizar novamente." session_logged_out: "🔴 Sua sessão foi desconectada. Execute `hermes portal` para entrar novamente." monthly_cap_reached_headroom: "🔴 Teto de gastos mensal atingido — ${remaining} de margem restante." monthly_cap_reached: "🔴 Teto de gastos mensal atingido." try_again_in_min: " (tente novamente em ~{minutes} min)" too_many_charges: "🟡 Cobranças demais neste momento{mins}. Isto não é uma falha de pagamento." remote_spending_needs_approval: "🔴 Gastos Remotos precisam de aprovação — execute /topup para permitir e tente novamente." your_topup: "sua recarga" charge_stepup_explain: "Para cobrar a partir deste terminal, permita Gastos Remotos uma única vez. O navegador será aberto para autorizar e, em seguida, {amount} continua daqui mesmo." charge_stepup_noninteractive: "Execute `hermes portal` e permita Gastos Remotos; depois, tente novamente." charge_stepup_declined: "Nenhuma cobrança feita. Execute /topup quando quiser permitir Gastos Remotos." charge_stepup_not_granted: "Não foi possível permitir Gastos Remotos — um administrador ou proprietário da org precisa aprovar. Seu cartão não foi cobrado." allowed_but_org_off: "Gastos Remotos estão permitidos para este terminal, mas ainda estão desativados para esta org. Um administrador de cobrança pode ativá-los na página Hermes Agent do portal; depois, execute /topup novamente." allowed_no_card: "Gastos Remotos permitidos — mas ainda não há cartão salvo." topup_on_portal_to_continue: "Recarregue e gerencie a cobrança no portal para continuar." allowed_run_topup: "Gastos Remotos permitidos. Execute /topup para continuar." choice_resume_topup: "Retomar recarga de {amount}" desc_resume_topup: "concluir a compra pendente" resume_topup_title: "Retomar sua recarga" resume_topup_detail: "{amount} está pronto para concluir — pressione Enter para retomar." resuming_topup: "Retomando sua recarga — confirmando a liquidação…" auto_reload: "Recarga automática" auto_reload_hint: "Adicionar fundos automaticamente quando seu saldo estiver baixo." card_on_file: "Cartão salvo: {card}" no_saved_card_manage_portal: "Nenhum cartão salvo — gerencie a cobrança no portal." auto_reload_rule: "abaixo de {threshold} → recarregar até {reload_to}" auto_reload_rule_cap: "Abaixo de {threshold} → recarregar até {reload_to}" currently: "Atualmente: {rule}" auto_reload_on_detail: "Ativada — {rule}" run_interactive_to_configure: "Execute na CLI interativa para configurar a recarga automática." choice_edit_thresholds: "Editar limites" desc_edit_thresholds: "alterar quando / quanto recarregar" choice_turn_off: "Desativar" desc_turn_off: "desativar a recarga automática" choice_agree_turn_on: "Concordar e ativar" desc_agree_turn_on: "ativar a recarga automática" amount_prompt_labeled: "{label} (USD)" threshold_label: "Quando o saldo cair abaixo de" reload_to_label: "Recarregar o saldo até" reload_must_exceed_threshold: "🔴 O valor de recarga deve ser maior que o limite." auto_reload_consent: "Ao confirmar, você autoriza a Nous Research a cobrar {card} sempre que seu saldo atingir {threshold}. Desative a qualquer momento aqui ou no portal." turn_on_auto_reload_question: "Ativar a recarga automática?" auto_reload_enabled: "✅ Recarga automática ativada: abaixo de {threshold} → recarregar até {reload_to}." auto_reload_disabled: "✅ Recarga automática desativada." monthly_spend_limit: "Limite de gastos mensal" no_monthly_cap: "Nenhum teto mensal visível (gerenciado no portal)." default_ceiling_suffix: " (teto padrão)" used_this_month: "{spent} de {limit} usados este mês{ceiling}" monthly_limit_read_only: "O limite mensal é definido no portal — o terminal o exibe em modo somente leitura." subscription: load_failed_label: "Não foi possível carregar a assinatura" team_header: "Assinatura de equipe" a_team_org: "uma organização de equipe" team_connected: "Este terminal está conectado a {org}. Equipes usam um saldo compartilhado · use /topup para adicionar fundos." personal_note: "Assinaturas pessoais ficam na sua conta pessoal." your_plan: "seu plano" cancels: "cancela" end_of_billing_period: "o fim do período de cobrança" end_of_cycle: "o fim do ciclo" status_flip_cancels: " → cancela" status_flip_to: " → {tier}" status_left: " · ${amount} restantes" status_view_only: " · somente visualização" status_renews: " · renova em {date}" status_line: "Plano: {plan}{flip}{left}{tail}" status_free: "Plano: Gratuito · apenas modelos gratuitos" scheduled_change: "Mudança agendada" scheduled_change_line: "{from_plan} ──▶ {to_plan} {when}" scheduled_when: "· {when}" keep_until_then: "Você mantém {plan} (e seus créditos) até então." paid_models_need_subscription: "> Modelos pagos exigem uma assinatura. Inicie uma para acessá-los." low_balance: "! Saldo baixo · {amount} restantes. Recarregue ou faça upgrade antes de um corte no meio da execução." plan_changes_need_admin: "Mudanças de plano exigem um administrador/proprietário da organização." manage_url_line: "Gerencie sua assinatura: {url}" open_then_rerun: "Abra no navegador e depois execute /subscription novamente." start_subscription: "Iniciar uma assinatura" choose_plan: "Escolha um plano" start_opens_portal: "Iniciar uma assinatura abre o portal para adicionar seu cartão." desc_start_on_portal: "iniciar {name} no portal" pick_plan_detail: "Escolha um plano para abri-lo no portal." cancelled_no_plan_started: "🟡 Cancelado. Nenhum plano iniciado." opening_portal_to_start: "Abrindo o portal para iniciar {plan}…" open_url_to_start: "Abra esta URL para iniciar {plan}: {url}" finish_in_browser: "Conclua no navegador e depois execute /subscription novamente." manage_your_subscription: "Gerenciar sua assinatura" desc_open_subscription_page: "abrir a página da assinatura no navegador" choice_copy_link: "Copiar link" desc_copy_link: "copiar a URL de gerenciamento da assinatura para a área de transferência" copied: "📋 Copiado: {url}" manage_url: "URL de gerenciamento: {url}" choice_keep_plan: "Manter {plan} (desfazer a mudança agendada)" desc_keep_plan: "cancelar a mudança pendente" choice_change_plan: "Mudar de plano" desc_change_plan: "fazer upgrade ou downgrade no terminal" choice_cancel_subscription: "Cancelar assinatura" desc_cancel_subscription: "agendar o cancelamento para o fim do período" closed_no_change: "🟡 Fechado. Nenhuma mudança de plano." no_other_plans: "Não há outros planos disponíveis para troca no momento." direction_upgrade: "upgrade" direction_downgrade: "downgrade" tier_row: "{row} · {direction}" desc_switch_to: "mudar para {name}" change_plan_title: "Mudar de plano" current_pick_detail: "Atual: {plan}. Escolha um plano para ver o efeito." cancelled_no_plan_change: "🟡 Cancelado. Nenhuma mudança de plano." checking_change: "Verificando a mudança…" the_selected_plan: "o plano selecionado" already_on_nothing_to_change: "Você já está em {plan} — nada a mudar." cannot_confirm_here: "Esta mudança não pode ser confirmada aqui — gerencie-a no portal." confirm_plan_change: "Confirmar mudança de plano" tag_charged_now: "· cobrado agora" tag_scheduled_not_today: "· agendado · não hoje" charged_amount_now: "{amount} agora (proporcional)" charged_prorated_now: "o valor proporcional agora" upgrade_will_be_charged: "Upgrade para {plan}. Será cobrado {charged}." card_on_subscription_charged: "O cartão da sua assinatura será cobrado." named_card_on_subscription_charged: "{card} — o cartão da sua assinatura — será cobrado." choice_pay_and_upgrade: "Pagar {amount} e fazer upgrade agora" choice_upgrade_now_prorated: "Fazer upgrade agora (cobrança proporcional)" desc_charge_and_upgrade: "cobrar + fazer upgrade agora" change_takes_effect: "Mudança para {plan} — entra em vigor {when}. Sem cobrança agora; você mantém o plano atual até então." choice_schedule_change: "Agendar mudança para {plan}" desc_apply_change: "aplicar esta mudança" desc_do_not_change: "não mudar" monthly_credits_change: "Mudança nos créditos mensais: {delta}." confirm_cancellation: "Confirmar cancelamento" cancel_stays_active_until: "Cancelar {plan} — permanece ativo até {end} e depois não renova." keep_remaining_credits: "Você mantém os créditos restantes deste período. É possível retomar antes que ele termine." cancel_subscription_question: "Cancelar a assinatura?" desc_keep_your_plan: "manter seu plano" cancelled_plan_unchanged: "🟡 Cancelado. Seu plano não foi alterado." your_new_plan: "seu novo plano" upgrade_already_on_tier: "Você já está em {name}." upgrade_upgraded: "Upgrade para {name} concluído. Seus novos créditos mensais chegam em instantes." upgrade_requires_action: "🟡 Este upgrade exige verificação adicional (3DS). Conclua no portal." upgrade_payment_failed: "🔴 Seu cartão foi recusado. Atualize a forma de pagamento no portal e tente novamente." pending_scheduled: "Agendado — seu plano não muda hoje. Você o mantém até o fim do período de cobrança e então ele é trocado." pending_cancel_scheduled: "Agendado — seu plano permanece ativo até o fim do período de cobrança e então é cancelado. Nada muda hoje." pending_resumed: "Desfeito — você permanece no plano atual." rerun_to_review: "Execute /subscription novamente a qualquer momento para revisar." stepup_explain: "Para mudar seu plano pelo terminal, permita o Remote Spending uma vez. O navegador abre para autorizar e a mudança continua aqui mesmo." stepup_noninteractive: "Execute `hermes portal` e permita o Remote Spending; depois execute /subscription novamente." stepup_declined: "Nenhuma mudança feita. Permita o Remote Spending quando estiver pronto." stepup_not_granted: "Não foi possível permitir o Remote Spending — um administrador ou proprietário da organização precisa aprová-lo." remote_spending_not_allowed_yet: "🟡 O Remote Spending ainda não está permitido. Permita-o e tente novamente." upgrade_ambiguous: "🟡 Não foi possível confirmar o upgrade — seu cartão pode ou não ter sido cobrado." rerun_to_check_plan: "Execute /subscription novamente para verificar seu plano antes de tentar de novo." model: switched: "✓ Modelo trocado: {model}" acting_model: "Modelo em uso (cobrado pela execução): {model}" reasoning_effort: "Esforço de raciocínio: {effort}" reasoning_effort_saved: "Esforço de raciocínio: {effort} (salvo na configuração)" saved: "Salvo em config.yaml" saved_global: "Salvo em config.yaml (--global)" next_turn_only: "(apenas no próximo turno — restaura após uma resposta)" session_only: "(apenas nesta sessão — adicione --global para persistir)" effort_none: "none (desativar raciocínio)" effort_keep_current: "Manter o esforço atual" no_authenticated_providers: "Nenhum fornecedor autenticado encontrado." usage_switch: "trocar modelo (nesta sessão)" usage_switch_global: "trocar modelo e persistir como padrão" usage_switch_once: "trocar apenas para o próximo turno" usage_switch_session: "trocar apenas para esta sessão" usage_switch_provider_model: "trocar fornecedor + modelo" usage_switch_reasoning: "trocar e definir o esforço de raciocínio" usage_switch_provider: "trocar fornecedor" usage_refresh: "buscar novamente as listas de modelos" choice_switch_anyway: "Trocar mesmo assim" desc_switch_anyway: "Usar este modelo na sessão atual do Hermes." choice_cancel: "Cancelar" desc_keep_current_model: "Manter o modelo atual." switch_cancelled: "Troca de modelo cancelada." selection_failed: "✗ Falha na seleção de modelo: {error}" switch_failed: "⚠ Falha ao trocar para o modelo {model} ({error}); permanecendo em {old_model}." cleared_picker_cache: "Cache do seletor de modelos limpo. Atualizando..." moa_one_shot_queued: "MoA de uma vez enfileirado com o preset {preset}; o modelo anterior será restaurado após este turno." normalized_model: "Modelo '{old}' normalizado para '{new}' em {provider}." normalized_copilot_model: "Modelo Copilot '{old}' normalizado para '{new}'." stripped_provider_prefix: "Prefixo de fornecedor removido de '{old}'; usando '{new}' em {provider}." restored_from_session: "Modelo restaurado da sessão: {model}" could_not_load_config: "❌ não foi possível carregar a configuração: {error}" tip_reset_new_session: "Dica: `/reset` inicia uma nova sessão imediatamente." single_query: query_label: "Consulta:" kanban_run_reclaimed: "kanban: a execução deste worker foi recuperada antes de começar; saindo" shared: cancel: "Cancelar" back: "← Voltar" unknown: "desconhecido" unknown_error: "Erro desconhecido" noun_model: "modelo" label_enabled: "ativado" label_disabled: "desativado" label_yes: "sim" label_no: "não" label_on: "ligado" label_off: "desligado" label_on_upper: "ON" label_off_upper: "OFF" label_value: "{label}: {value}" just_now: "agora mesmo" ago_seconds: "há {seconds}s" ago_minutes: "há {minutes} min" ago_hours: "há {hours}h" duration_s: "{seconds}s" duration_m: "{minutes}m" duration_ms: "{minutes}m {seconds}s" duration_ms_compact: "{minutes}m{seconds}s" duration_hm: "{hours}h {minutes}m" duration_hms: "{hours}h {minutes}m {seconds}s" duration_dhm: "{days}d {hours}h {minutes}m" duration_m_rest: "{minutes}m {rest}" duration_hm_rest: "{hours}h {minutes}m {rest}" no_active_agent: "(._.) Nenhum agente ativo -- envie uma mensagem primeiro." n_more: "{count} a mais" more_not_shown: "mais itens não exibidos" yes_no_default_yes: "S/n" yes_no_default_no: "s/N" yes_initial: "s" tui: approval_once: "Permitir uma vez" approval_session: "Permitir nesta sessão" approval_always: "Adicionar à lista de permissões permanente" approval_deny: "Negar" approval_view: "Mostrar comando completo" approval_title: "⚠️ Comando perigoso" approval_choose_full: "… (escolha {label})" approval_command_truncated: "… (comando truncado — use /logs ou /debug para o texto completo)" approval_description_truncated: "… (descrição truncada)" confirm_title: "Confirmar ação" confirm_footer: "Digite 1/2/3 ou use ↑/↓ e Enter. ESC/Ctrl+C cancela." detail_truncated: "… (detalhe truncado)" clarify_title: "{agent_name} precisa da sua resposta" clarify_question_count_one: "{count} pergunta" clarify_question_count_other: "{count} perguntas" clarify_other_answer: "Outro: {text}" clarify_other_type_below: "Outro (digite abaixo)" clarify_other_type_answer: "Outro (digite sua resposta)" clarify_guidance: "Digite sua resposta no prompt abaixo e pressione Enter." picker_title_provider: "⚙ Seletor de modelos — Selecione o fornecedor" picker_provider_row_one: "{name} ({count} modelo)" picker_provider_row_other: "{name} ({count} modelos)" picker_current_marker: " ← atual" picker_current_hint: "Atual: {model} em {provider}" picker_title_effort: "⚙ Seletor de modelos — Esforço de raciocínio para {model}" picker_current_labeled: "{label} ← atual" picker_effort_hint: "Aplica-se com a troca de modelo (mesmo escopo) — Enter para escolher" picker_title_models: "⚙ Seletor de modelos — {provider}" picker_provider_fallback: "Fornecedor" picker_filter_hint: "Filtro: {query}▏ ({shown}/{total} correspondem — digite para refinar, Backspace para limpar)" picker_select_hint: "Selecione um modelo ({count} disponíveis) — digite para filtrar" picker_empty: "Nenhum modelo listado para este fornecedor. Use Voltar ou Cancelar." palette_title: "⚙ Paleta de comandos" palette_filter_hint: "Filtro: {query}▏ ({shown}/{total} correspondem — Enter insere, Esc cancela)" palette_hint: "Digite para filtrar {total} comandos — ↑/↓ e Enter insere, Esc cancela" palette_empty: "(nenhum comando correspondente)" vault_code_title: "🔐 Código de verificação para {site}" vault_code_body: "{site} está pedindo um código de uso único (SMS, e-mail ou app autenticador).\nDigite o código e pressione Enter; {agent_name} o insere na página para você.\nEnter em uma linha vazia pula. O modelo nunca vê o código." vault_save_title: "🔐 Salvar login para {site}" vault_save_body: "O agente chegou a uma página de login sem login salvo para este site.\nDigite o e-mail / nome de usuário com que você entra (visível) e pressione Enter.\nEnter em uma linha vazia pula. Nada aqui é mostrado ao modelo." vault_save_pw_body: "Agora a senha (oculta). Ela é criptografada nesta máquina, vinculada a\n{origin}, e preenchida na página sem que o modelo jamais a veja.\nEnter em uma linha vazia pula." vault_unlock_title: "🔐 Desbloquear {backend}" vault_unlock_body: "O agente quer entrar em um site com um login salvo em {backend}.\nDigite sua senha mestra (oculta) para desbloqueá-lo nesta sessão.\nEnter em uma linha vazia o mantém bloqueado. O modelo nunca vê a senha." sudo_title: "🔐 Senha de sudo necessária" sudo_body: "Digite a senha abaixo (oculta) ou pressione Enter para pular" secret_title: "🔑 Configuração de skill necessária" secret_prompt: "Digite o valor de {var_name}" secret_fallback_name: "segredo" secret_body: "Digite o segredo abaixo (oculto), ESC ou Ctrl+C para pular" connection_connect: "Conectar" connection_continue: "Continuar" hint_sudo: "senha oculta · Enter para pular" hint_secret: "segredo oculto · Enter para pular" hint_approval: "↑/↓ para selecionar, Enter para confirmar" hint_slash_confirm: "digite 1/2/3, ou ↑/↓ para selecionar, Enter para confirmar" hint_connection_form: "digite o valor, Enter para o próximo campo · ↑/↓ mover · ESC cancelar" hint_connection_url: "Enter para abrir no navegador · ESC cancelar" hint_connection_authorized: "↑/↓ selecionar, Enter para confirmar" hint_connection_waiting: "aguardando o backend… · Ctrl+C interromper" hint_connection_default: "configuração da conexão" hint_vault_username: "visível ao digitar · Enter para continuar" hint_clarify_freetext: "digite sua resposta e pressione Enter" hint_clarify_batch: "↑/↓ para selecionar, Enter para fixar, Tab próxima pergunta" hint_input_disabled: "entrada temporariamente desativada" hint_input_queues: "entrada continua ativa; Enter enfileira" hint_command_running: "{frame} comando em andamento · {detail}" placeholder_recording: "gravando... {shortcut} para parar, Ctrl+C para cancelar" placeholder_transcribing: "transcrevendo..." placeholder_vault_username: "digite seu e-mail / nome de usuário, Enter para continuar · ESC para pular" placeholder_vault_code: "digite o código, Enter para enviar · ESC para pular" placeholder_password: "digite a senha (oculta), Enter para enviar · ESC para pular" placeholder_secret: "digite o segredo (oculto), Enter para enviar · ESC para pular" placeholder_choice: "digite 1/2/3, ou use ↑/↓ e Enter" placeholder_answer: "digite sua resposta aqui e pressione Enter" placeholder_processing_command: "Processando comando..." placeholder_busy: "msg=interromper · /queue · /bg · /steer · Ctrl+C cancelar" placeholder_voice_idle: "digite ou {shortcut} para gravar" voice_recording_failed: "Falha na gravação de voz: {error}" recording_cancelled: "Gravação cancelada." force_exiting: "⚡ Forçando saída..." interrupting_again_hint: "⚡ Interrompendo o agente... (pressione Ctrl+C de novo para forçar a saída)" interrupting: "⚡ Interrompendo o agente..." suspend_unsupported: "Suspender (Ctrl+Z) não é suportado no Windows." suspended: "{agent_name} foi suspenso. Execute `fg` para trazer {agent_name} de volta." steer_failed_queued: "Falha no redirecionamento ({error}) — enfileirado para o próximo turno." steered: "⏩ Redirecionado: '{preview}'" images_attached_preview_one: "[{count} imagem anexada]" images_attached_preview_other: "[{count} imagens anexadas]" queued_next_turn: "Enfileirado para o próximo turno: {preview}" redirected_turn: "↪ Turno atual redirecionado: '{preview}'" model_selection_failed: "✗ Falha na seleção de modelo: {error}" auto_attached_image: "📎 Imagem anexada automaticamente: {name}" detected_file: "📄 Arquivo detectado: {name}" images_attached_one: "📎 {count} imagem anexada" images_attached_other: "📎 {count} imagens anexadas" command_interrupted: "Comando interrompido." welcome: "Bem-vindo ao Hermes Agent! Digite sua mensagem ou /help para ver os comandos." activated_skills_label: "Skills ativadas:" redaction_disabled_title: "⚠ A redação de segredos está DESATIVADA" redaction_disabled_body: "(HERMES_REDACT_SECRETS={value}). Chaves de API e tokens podem aparecer sem máscara na saída do chat, nos JSONs de sessão e nos logs. Defina {setting} em config.yaml para reativar." stdin_unavailable: "Erro: stdin (fd 0) não está disponível.\nIsso pode ocorrer com certas instalações do Python (ex.: cPython gerenciado pelo uv no macOS).\nTente reinstalar o Python via pyenv ou Homebrew e depois execute novamente: hermes setup" shutting_down: "Encerrando… (finalizando a sessão)" session_deleted: "✓ Sessão {session_id} excluída" session_delete_missing: "✗ Sessão {session_id} não encontrada para exclusão" voice: err_termux_app_missing: "Pacote de comandos Termux:API detectado, mas o aplicativo Android está ausente.\nInstale/atualize o aplicativo Android Termux:API e tente /voice on novamente." err_mic_access: "O modo de voz precisa de acesso ao microfone.\nExecute pkg install termux-api e instale o aplicativo Android Termux:API; depois tente /voice on novamente." err_audio_capture: "O modo de voz requer captura de áudio." err_stt_provider: "O modo de voz requer um fornecedor de STT para transcrição.\nExecute hermes tools e configure Speech-to-Text; depois reinicie o Hermes." silence_autostop: "Silêncio detectado, parando automaticamente..." hint_continuous: "para automaticamente no silêncio | {shortcut} para parar e sair do modo contínuo" hint_termux: "Captura Termux:API | {shortcut} para parar" hint_stop: "{shortcut} para parar" recording: "● Gravando..." autorestart_failed: "Falha ao reiniciar automaticamente a voz: {error}" no_speech: "Nenhuma fala detectada." preparing_stt: "Preparando o modelo STT local '{model}' (o primeiro uso pode baixá-lo do Hugging Face)..." transcribing: "Transcrevendo..." stop_phrase: "Frase de parada detectada — encerrando o chat por voz." transcription_failed: "Falha na transcrição: {error}" processing_error: "Erro no processamento de voz: {error}" recording_preserved: "Gravação preservada em: {path}" no_speech_stop: "Nenhuma fala detectada 3 vezes; modo contínuo interrompido." tts_failed: "Falha na reprodução de TTS: {error}" interjection: "🎤 Interjeição de voz — interrompendo…" echo_ignored: "Provável eco de TTS ignorado (não enfileirado)." already_enabled: "O modo de voz já está ativado." unavailable_header: "Modo de voz indisponível neste ambiente:" requirements_header: "Requisitos do modo de voz não atendidos:" termux_install_cmd: "Execute: pkg install termux-api" termux_install_hint: "Depois instale/atualize o aplicativo Android Termux:API para captura do microfone" tts_enabled_suffix: " (TTS ativado)" enabled: "Modo de voz ativado{tts_status}" record_key_hint: "{shortcut} para iniciar/parar a gravação" tts_toggle_hint: "/voice tts para alternar a saída de fala" disable_hint: "/voice off para desativar o modo de voz" stop_phrase_typed: "Frase de parada digitada — encerrando o chat por voz." disabled: "Modo de voz desativado." wake_unavailable: "Palavra de ativação indisponível: {error}" wake_already: "A palavra de ativação já está em escuta." wake_requirements_header: "Requisitos da palavra de ativação não atendidos:" wake_installing: "Instalando o mecanismo de palavra de ativação (primeiro uso — pode levar um minuto)..." wake_start_failed: "Falha ao iniciar a palavra de ativação: {error}" wake_listening: "Palavra de ativação em escuta" wake_listening_hint: "(diga \"{phrase}\" — /wake off para parar)" wake_stopped: "Palavra de ativação parada." wake_not_running: "A palavra de ativação não está em execução." wake_profile_hint: "Frase de ativação do perfil '{profile}' — execute: hermes -p {profile}" wake_detected: "✦ Palavra de ativação detectada — escutando..." wake_capture_failed: "Falha na captura de ativação: {error}" state_listening: "ESCUTANDO" state_paused: "PAUSADO" state_off: "OFF" state_on: "ON" state_yes: "SIM" wake_status_title: "Status da Palavra de Ativação" label_state: " Estado: {state}" label_phrase: " Frase: \"{phrase}\"" label_provider: " Fornecedor: {provider}" label_surface: " Superfície: {surface}" label_new_session: " Nova sessão: {value}" mic_silent_warning: "⚠ O microfone só entrega silêncio — o ouvinte não consegue ouvir nada." mic_silent_macos_hint: "No macOS: Ajustes do Sistema > Privacidade e Segurança > Microfone — permita seu terminal/Hermes e depois /wake off + /wake on." wake_enable_hint: "Ative com /wake on" enable_first_hint: "Ative o modo de voz primeiro: /voice on" tts_no_provider: "Aviso: nenhum fornecedor de TTS disponível. Instale edge-tts ou defina chaves de API." tts_status: "TTS de voz {status}." status_title: "Status do Modo de Voz" label_mode: " Modo: {value}" label_tts: " TTS: {value}" label_recording: " Gravação: {value}" label_record_key: " Tecla de gravação: {shortcut}" label_requirements: "Requisitos:" render: response_transformed: "[Resposta transformada após o streaming]" banner_tagline: "{name} - Framework de Agentes de IA" banner_version: "Hermes Agent v{version} ({date})" subagents: cannot_steer_process: "Processos em segundo plano não podem ser redirecionados; pare-os ou leia o log." count_live: "{count} ativos" count_done: "{count} concluídos" count_running: "{count} em execução" count_procs_one: "{count} proc" count_procs_other: "{count} procs" count_queued: "{count} na fila" goal_parked: "objetivo estacionado" goal_paused: "objetivo pausado" goal_active: "objetivo ativo" title_live_work: "Trabalho ativo" title_subagents: "Subagentes" title_processes: "Processos" last_tool: "última: {tool}" starting: "iniciando" next_queued: "próximo: {text}" heading_full: "{title} · {count} · Ctrl+T expandir · Ctrl+R restaurar" heading_medium: "{count} · Ctrl+T expandir · Ctrl+R restaurar" heading_compact: "{count} · Ctrl+T · Ctrl+R" heading_session_restore: "{count} · Ctrl+R restaurar" heading_session_compact: "{count} · Ctrl+R" subagents_heading: "Subagentes · {count} ativos · Ctrl+T expandir · Ctrl+R recolher" more_subagents: "+{count} mais · Ctrl+T todos os subagentes" controls_expand_collapse: " · Ctrl+T expandir · Ctrl+R recolher" processes_heading: "Processos · {summary}{controls}" more_processes: "+{count} mais · Ctrl+T todos os processos" controls_collapse: " · Ctrl+R recolher" queue_heading: "Fila · {count} na fila · /queue list{controls}" more_queued: "+{count} mais" transcript_unavailable: "Transcrição ao vivo ainda não disponível." steer_prompt: "Redirecionar: " roster_empty: "Nenhum subagente ativo nem processo em segundo plano. Os resultados chegam na conversa." entry_gone: "Esta entrada não está mais ativa." noun_process: "processo" noun_subagent: "subagente" footer_confirm_stop: "Parar o {noun} selecionado? y confirmar · Esc cancelar" footer_confirm_stop_compact: "Parar? y sim · Esc cancelar" footer_steering: "Enter enfileira a orientação · Esc cancela (não interrompe)" footer_steering_compact: "Enter enviar · Esc cancelar" footer_steer_key: " s redirecionar" footer_steer_key_long: " · s redirecionar" footer_detail_compact: "PgUp/Dn ·{steer} x parar · Esc" footer_roster_compact: "↑↓ · Enter acompanhar · Ctrl+T fechar" footer_detail: "Esc lista · PgUp/PgDn acompanhar{steer} · x parar" footer_roster: "↑/↓ selecionar · Enter acompanhar{steer} · x parar · q/Ctrl+T fechar" dock: process_goal_label: "processo em segundo plano" last_output: "última: {detail}" starting: "iniciando" exit_code: "saída {code}" verdict_killed: "encerrado" verdict_lost: "perdido" verdict_ago: "{verdict} · há {seconds}s" process_gone: "Este processo não é mais rastreado." no_output: "Nenhuma saída ainda." approval: bell_context: "aprovação" label: "Aprovação" timeout_denying: "⏱ Tempo limite — negando o comando" timed_out_no_response: "tempo limite esgotado (sem resposta)" outcome_once: "permitido uma vez" outcome_session: "permitido para a sessão" outcome_always: "adicionado à lista de permissões" outcome_deny: "negado" clarify: bell_context: "esclarecimento" label: "Esclarecer" timed_out_locked_answers: "(esclarecimento expirou após {timeout}s — respostas travadas retornadas)" connect: bell_context: "configuração de conexão" cannot_restart: "Esta conexão não pode ser iniciada novamente. Cancele e peça ao agente de novo." secret_set: "Definido" set_up: "Configurar {name}" button_connect: "Conectar" button_cancel: "Cancelar" button_continue: "Continuar" press_enter_open: "Pressione Enter para abrir no navegador" failed: "Falha na conexão" authorized_no_tools: "Autorizado. Ferramentas indisponíveis." connected: "Conectado" waiting: "Aguardando…" editor: only_interactive: "O editor externo só está disponível dentro da CLI interativa." wait_for_command: "Aguarde o comando atual terminar antes de abrir o editor." finish_active_prompt: "Conclua o prompt ativo antes de abrir o editor." no_input_buffer: "Nenhum buffer de entrada ativo disponível para o editor externo." open_failed: "Falha ao abrir o editor externo: {error}" shell_command_failed: "Falha no comando do shell: {error}" command_failed: "Falha no comando: {error}" queued_next_turn: "Enfileirado para o próximo turno: {preview}" modal: cancelled_no_input: "🟡 /{command} cancelado (sem entrada)." unrecognized_choice: "🟡 Escolha não reconhecida '{raw}'. /{command} cancelado." cancelled: "🟡 /{command} cancelado. {unchanged}" re_enable_hint: " Reative via `approvals.{setting}: true` no config.yaml." persist_opt_out_failed: "⚠️ Não foi possível persistir a recusa — {once_verb} uma vez." persist_failed_proceeding: "⚠️ Não foi possível persistir a recusa — prosseguindo uma vez." choice_prompt: "Escolha [1/2/3]: " destructive_title: "⚠️ /{command} — destrói o estado da conversa" approve_once: "Aprovar Uma Vez" approve_once_detail: "prosseguir só desta vez" always_approve: "Sempre Aprovar" always_approve_detail: "prosseguir e silenciar este aviso permanentemente" cancel: "Cancelar" cancel_detail: "manter a conversa atual" conversation_unchanged: "Conversa inalterada." destructive_always_msg: "🔒 Os próximos /clear, /new, /reset e /undo serão executados sem confirmação." bell_input_needed: "entrada necessária" bell_turn_complete: "turno concluído" palette: category_skill: "Skill" secret: bell_sudo: "senha do sudo" sudo_timeout: "⏱ Tempo limite — continuando sem sudo" sudo_received: "✓ Senha recebida (armazenada em cache para a sessão)" sudo_skipped: "⏭ Ignorado" bell_unlock: "desbloquear {name}" stays_locked: "⏭ {name} permanece bloqueado" unlocking_for_session: "✓ Desbloqueando {name} para esta sessão" bell_save_login: "salvar login para {site}" login_not_saved: "⏭ Login para {site} não será salvo" login_saved: "✓ Login para {site} salvo no seu cofre" bell_verification_code: "código de verificação para {site}" code_not_entered: "⏭ Nenhum código inserido para {site}" code_entered: "✓ Código inserido em {site}" display: ui_redrawn: "✓ Interface redesenhada" status_bar_visible: "Barra de status visível" status_bar_hidden: "Barra de status oculta" exit: unknown_argument: "✗ Argumento desconhecido: {argument}. Use /exit --delete para remover também o histórico da sessão." goal: barrier_lifted: "▶ Barreira do objetivo removida — retomando." paused_interrupted: "⏸ Objetivo pausado — o turno foi interrompido. Use /goal resume para continuar ou /goal clear para parar." loop: wakeup_firing: "↻ Despertar #{tick} do /loop disparando…" paused_interrupted: "⏸ Loop pausado — o turno de despertar foi interrompido. Use /loop resume para continuar ou /loop stop para encerrá-lo." remaining: "↻ Loop: {label}." plugins: none_installed: "Nenhum plugin de usuário instalado." install_hint: "Instale um: hermes plugins install owner/repo" drop_dir_hint: "Ou coloque um diretório de plugin em {path}" bundled_available: "({count} plugins integrados disponíveis — veja: hermes plugins list)" user_plugins_header: "Plugins de usuário ({count}):" count_noun_tools: "ferramentas" count_noun_hooks: "hooks" count_noun_commands: "comandos" bundled_more: "(+{count} integrados — veja: hermes plugins list)" enable_disable_hint: "Ativar/desativar: hermes plugins enable/disable " system_error: "Erro no sistema de plugins: {error}" queue: usage: "Uso: /queue | /queue list | /queue edit N | /queue rm N | /queue move DE PARA | /queue clear" queued: "Enfileirado: {preview}" queued_next_turn: "Enfileirado para o próximo turno: {preview}" empty: "A fila está vazia." pending_header: "Fila ({count} pendentes):" cleared_one: "{count} prompt da fila removido." cleared_other: "{count} prompts da fila removidos." removed: "Item {index} removido da fila: {preview}" item_not_found: "Item {index} da fila não encontrado. Tamanho atual: {size}" usage_edit: "Uso: /queue edit " updated: "Item {index} da fila atualizado: {preview}" usage_move: "Uso: /queue move " move_out_of_range: "Movimento na fila fora do intervalo. Tamanho atual: {size}" moved: "Item {source} da fila movido para {destination}." usage_add: "Uso: /queue add " reload: env_reloaded: ".env recarregado ({count} variável(is) atualizada(s))" steer: usage: "Uso: /steer " failed: "Falha no redirecionamento: {error}" queued: "⏩ Redirecionamento enfileirado — chega após a próxima chamada de ferramenta: {preview}" rejected_empty: "Redirecionamento rejeitado (conteúdo vazio)." no_agent_queued: "Nenhum agente em execução; enfileirado como próximo turno: {preview}" title: session_id: "ID da sessão: {session_id}" current: "Título: {title}" pending: "Título (pendente): {title}" none_set_usage: "Nenhum título definido. Uso: /title " usage: "Uso: /title " empty_after_cleanup: "O título ficou vazio após a limpeza. Use caracteres imprimíveis." set: "Título da sessão definido: {title}" already_in_use: "O título '{title}' já está em uso pela sessão {session_id}" queued: "Título da sessão enfileirado: {title} (será salvo na primeira mensagem)" undo: invalid_count: "(._.) Contagem inválida {value} — use /undo ou /undo N." removes_last_exchange: "Isto remove a última troca usuário/assistente do histórico." removes_last_turns: "Isto remove os últimos {count} turnos do usuário do histórico." resume: tool_calls_one: "[{count} chamada de ferramenta: {names}]" tool_calls_other: "[{count} chamadas de ferramenta: {names}]" event_model_changed: "modelo alterado" event_delegation_completed: "delegação em segundo plano concluída" event_process_finished: "processo em segundo plano finalizado" event_resumed_interrupted: "turno interrompido retomado" session_id_hint: "Use um ID de sessão de uma execução anterior da CLI (hermes sessions list)." session_not_found: "Sessão não encontrada: {session_id}" compressed_into: "A sessão {session_id} foi comprimida em {descendant}; retomando a descendente com sua transcrição." cannot_resume: "Não foi possível retomar a sessão: {error}" cannot_resume_prefix: "Não foi possível retomar a sessão:" resumed_session: "↻ Sessão retomada" counts_one: "({count} mensagem do usuário, {total} mensagens no total)" counts_other: "({count} mensagens do usuário, {total} mensagens no total)" session_no_messages: "Sessão {session_id} encontrada, mas sem mensagens. Começando do zero." title_applied: "Título da sessão aplicado: {title}" title_apply_failed: "Não foi possível aplicar o título pendente: {error}" label_you: "● Você:" label_assistant: "◆ {agent_name}:" earlier_messages: "... {count} mensagens anteriores ..." panel_title: "Conversa Anterior" startup: cooldown_cause_rate_limit: "após uma resposta de limite de taxa ou de cota" cooldown_cause_token_refresh: "após uma falha na atualização do token" cooldown_cause_http: "após uma resposta HTTP {code}" cooldown_cause_failed_request: "após uma requisição com falha" credential_cooling_down: "A credencial de {provider} está em resfriamento {cause}; ela volta à rotação em cerca de {minutes}m." sign_in_lost: "login perdido" sign_in_was_lost: "O login de {provider} foi perdido ({reason}); execute `hermes auth add {provider}` para entrar novamente." provider_resolution_failed: "Falha na resolução do fornecedor." no_api_key_for_provider: "⚠️ Nenhuma chave de API encontrada para o fornecedor '{provider}'." no_provider_configured: "⚠️ Nenhum fornecedor de inferência está configurado." run_model_or_setup: "Execute 'hermes model' para escolher um fornecedor ou 'hermes setup' para a configuração inicial." empty_base_url: "⚠️ O resolvedor de fornecedores retornou uma URL base vazia. Verifique a configuração do fornecedor ou execute: hermes setup" switching_to_fallback: "⚠️ {reason} — alternando para o fallback: {provider} / {model}" first_run_no_provider: "☤ Nenhum fornecedor de inferência configurado ainda — vamos resolver isso." first_run_pick_provider: "Você escolherá um fornecedor (o OAuth do Nous Portal é o mais rápido; não precisa de chave de API) e um modelo." first_run_prompt: "Configurar um fornecedor agora? [Y/n]:" first_run_skipped: "Ignorado. Execute 'hermes model' ou 'hermes setup' a qualquer momento." first_run_cancelled: "Configuração cancelada. Execute 'hermes model' a qualquer momento." provider_setup_failed: "⚠️ Falha na configuração do fornecedor: {error}" run_model_to_retry: "Execute 'hermes model' para tentar novamente." provider_configured: "✓ Fornecedor configurado — tudo pronto para conversar." provider_setup_incomplete: "A configuração do fornecedor não foi concluída. Execute 'hermes model' para tentar novamente." tirith_unavailable: "⚠ Scanner de segurança tirith ativado, mas não disponível — a verificação de comandos usará apenas correspondência de padrões" unknown_toolsets: "Aviso: conjuntos de ferramentas desconhecidos: {names}" stdin_unusable: "\nErro: stdin não é utilizável ({error}).\nIsso pode acontecer com certas instalações do Python (ex.: cPython gerenciado pelo uv no macOS)\nem que o kqueue não consegue registrar o fd 0.\nTente reinstalar o Python via pyenv ou Homebrew e depois execute novamente: hermes setup" warning: "Aviso: {warning}" chat: initializing_agent: "Inicializando agente..." context_refs: "[@ contexto: {count} ref(s), {tokens} tokens]" context_injection_refused: "Injeção de contexto recusada." skipped_unreadable_images: "⚠ {count} caminho(s) de imagem ilegível(is) ignorado(s)" attaching_images_natively: "📎 anexando {count} imagem(ns) nativamente (o modelo suporta visão): {names}" new_message_interrupting: "⚡ Nova mensagem detectada, interrompendo..." unknown_error: "Erro desconhecido" continuous_voice_stopped: "Modo de voz contínuo interrompido devido a um erro." interrupted_marker: "── [Interrompido — processando nova mensagem] ──" iteration_budget_reached: "⚠ Limite de iterações atingido ({used}/{max}) — a resposta pode estar incompleta" sending_after_interrupt_multi: "⚡ Enviando {count} mensagens após a interrupção: '{preview}'" sending_after_interrupt: "⚡ Enviando após a interrupção: '{preview}'" delivering_leftover_steer: "⏩ Entregando /steer pendente como próximo turno: '{preview}'" reasoning_label: "Raciocínio" reasoning_more_lines: "... ({count} linhas a mais — /reasoning full para exibir)" billing_cta_nous: "Execute [bold]/topup[/] para adicionar créditos ou [bold]/subscription[/] para mudar de plano." billing_cta_provider: "Adicione créditos com {provider}" your_provider: "seu fornecedor" billing_cta_switch: "Ou troque de fornecedor com [bold]/model --provider [/]." out_of_credits_title: "⚡ Sem créditos" session: fresh_start: "✨ (◕‿◕)✨ Recomeço! Tela limpa e conversa reiniciada." model_reset_default: "(modelo redefinido para o padrão da configuração: {model})" title_rejected: "Título rejeitado: {error}" title_empty_untitled: "O título ficou vazio após a limpeza — sessão iniciada sem título." title_error_untitled: "{error} — sessão iniciada sem título." cwd_gone: "⚠ O diretório de trabalho da sessão não existe mais: {recorded} — permanecendo em {current}" cwd_restored: "↻ Diretório de trabalho: {path}" cwd_enter_failed: "⚠ Não foi possível entrar no diretório de trabalho da sessão {path}: {error}" yolo_restored: "⚡ Modo YOLO restaurado da sessão — todos os comandos aprovados automaticamente. /yolo para desativar." invalid_checkpoint: "Número de checkpoint inválido. Use 1-{count}." status_tools_deferred: "ferramentas adiadas" status_tools_count: "{count} ferramentas" status_toolsets: "conjuntos de ferramentas: {toolsets}" status_provider: "fornecedor: {provider}" status_auth: "autenticação: {source}" reasoning_display_suffix: " (exibição: {state})" yolo_bypass_suffix: " (bypass YOLO ativo)" ctx_left_prefix: "{percent}% restante · " ctx_tokens_used: "{left}{used} / {max} tokens usados" status_title: "Status do Hermes CLI" label_reasoning: "Raciocínio" label_approvals: "Aprovações" label_context: "Contexto" recent_intro: "(._.) Ainda não há mensagens no chat atual — estas são sessões recentes que podem ser retomadas:" recent_header: "Sessões recentes:" column_title: "Título" column_preview: "Prévia" column_last_active: "Última atividade" column_id: "ID" resume_usage: "Use /resume , /resume ou /resume para continuar." resume_example: "Exemplo: /resume 2" history_empty: "(._.) Ainda não há histórico de conversa." history_tools_header: "[Ferramentas]" history_tools_hidden_one: "({count} mensagem de ferramenta oculta)" history_tools_hidden_other: "({count} mensagens de ferramenta ocultas)" history_title: "(^_^) Histórico da conversa" history_you_header: "[Você #{index}]" history_assistant_header: "[{agent_name} #{index}]" history_no_text: "(sem resposta em texto)" history_tool_calls_one: "(solicitou {count} chamada de ferramenta)" history_tool_calls_other: "(solicitou {count} chamadas de ferramenta)" new_session_titled: "(^_^)v Nova sessão iniciada: {title}" new_session: "(^_^)v Nova sessão iniciada!" resume_index_out_of_range: "O índice de retomada {index} está fora do intervalo." resume_no_args_hint: "Use /resume sem argumentos para ver as sessões disponíveis." save_nothing: "(;_;) Nenhuma conversa para salvar." save_dir_failed: "(x_x) Falha ao criar o diretório de salvamento {path}: {error}" format_markdown: "Markdown" save_ok: "(^_^)v Conversa salva em: {path} ({label})" save_resume_hint: "Retome a sessão ativa com: hermes --resume {session_id}" save_failed: "(x_x) Falha ao salvar: {error}" retry_no_messages: "(._.) Nenhuma mensagem para tentar novamente." retry_no_user_message: "(._.) Nenhuma mensagem do usuário encontrada para tentar novamente." retry_unsafe: "(._.) Não é possível tentar essa mensagem novamente com segurança: {error}" retry_rewind_failed: "(x_x) Falha ao retroceder para tentar novamente; o histórico não foi alterado: {error}" retrying: "(^_^)b Tentando novamente: \"{preview}\"" undo_no_messages: "(._.) Nenhuma mensagem para desfazer." undo_no_user_message: "(._.) Nenhuma mensagem do usuário encontrada para desfazer." undo_failed: "(x_x) Falha ao desfazer; o histórico não foi alterado: {error}" undo_ok_one: "(^_^)b {count} turno desfeito ({messages} mensagem(ns)). Backup salvo em: \"{backup}\"" undo_ok_other: "(^_^)b {count} turnos desfeitos ({messages} mensagem(ns)). Backup salvo em: \"{backup}\"" undo_remaining: "{count} mensagem(ns) restante(s) no histórico." yolo_state_locked_on: "travado em ON" yolo_locked: "⚡ O YOLO está {state} neste processo (iniciado com --yolo / HERMES_YOLO_MODE). /yolo não pode desativá-lo — reinicie sem a flag para reativar as aprovações." yolo_off: "⚠ Modo YOLO {state} — comandos perigosos exigirão aprovação." yolo_on: "⚡ Modo YOLO {state} — todos os comandos aprovados automaticamente. Use com cautela." compress_too_short: "(._.) Conversa insuficiente para comprimir (são necessárias pelo menos {min} mensagens)." compress_no_agent: "(._.) Nenhum agente ativo -- envie uma mensagem primeiro." compress_busy: "Comprimindo contexto..." compress_summarizing: "🗜️ Resumindo até aqui: {count} mensagens, mantendo a(s) última(s) {keep_last} troca(s) literalmente..." compress_focus: "🗜️ Comprimindo {count} mensagens, foco: \"{focus}\"..." compress_plain: "🗜️ Comprimindo {count} mensagens..." compress_failed: "❌ Falha na compressão: {error}" persist_prompt_summary: "{icon} {label}: {detail} → {outcome}" goodbye: "Até logo! ☤" exit_resume_hint: "Retome esta sessão com:" exit_label_session: "Sessão: {session_id}" exit_label_title: "Título: {title}" exit_label_duration: "Duração: {duration}" exit_label_messages: "Mensagens: {count} ({user} do usuário, {tool_calls} chamadas de ferramenta)" status_bar: vim_insert: "INSERIR" vim_replace: "SUBSTITUIR" vim_normal: "NORMAL" battery_none: "nenhuma bateria detectada nesta máquina" battery_none_nothing_shown: "nenhuma bateria detectada, então nada será exibido aqui" battery_currently: " — atualmente {reading}" battery_state: "Indicador de bateria {state}{detail}" battery_usage: "Uso: /battery [on|off|status]" battery_on: "Indicador de bateria ativado{detail}" battery_off: "Indicador de bateria desativado" latency_label: "{value}s" velocity_label: "{value} t/s" voice_rec: "● REC" voice_rec_stop_hint: "● REC {shortcut} para parar" voice_stt: "◉ STT" voice_transcribing: "◉ Transcrevendo..." voice_tts_on: " | TTS ativo" voice_continuous: " | Contínuo" voice_mode_hint: "🎤 Modo de voz{tts}{cont} — {shortcut} para gravar" goal_turns: "⊙ objetivo {used}/{max}" goal: "⊙ objetivo" ctx_pinned: " fixado" ctx_unknown: "ctx --" yolo_badge: "⚠ YOLO" stash_header_one: "📌 Guardados ({count} item)" stash_header_other: "📌 Guardados ({count} itens)" stash_footer: "↑↓ Enter=restaurar D=excluir Esc" stash_footer_compact: "↑↓ ⏎ D Esc" stream: busy_skills_search: "Pesquisando skills..." busy_skills_browse: "Carregando skills..." busy_skills_inspect: "Inspecionando skill..." busy_skills_install: "Instalando skill..." busy_skills: "Processando comando de skills..." busy_browser: "Configurando navegador..." busy_reload_mcp: "Recarregando servidores MCP..." busy_reload_skills: "Recarregando skills..." processing_command: "Processando comando..." thinking_label: "[pensando]" thinking_more_lines: "... ({count} linhas a mais)" preview_more_lines_one: "... (+{count} linha a mais)" preview_more_lines_other: "... (+{count} linhas a mais)" vision_analyzing: "👁️ analisando {name} ({size_kb}KB)..." vision_analyzed: "✓ imagem analisada" vision_failed: "⚠ falha na análise de visão — caminho incluído para nova tentativa" vision_error: "⚠ erro na análise de visão — caminho incluído para nova tentativa" tool_preparing: "{emoji} preparando {what}…" reference_noun: "referência" reference_header_indexed: "Referência {index}/{count} — {label}" reference_header: "Referência — {label}" aggregating_detail: "◆ agregando ({detail})" aggregating: "◆ agregando" background_running_one: "↩ Tarefa em segundo plano em execução — retomarei quando ela terminar. Continue conversando." background_running_other: "↩ {count} tarefas em segundo plano em execução — retomarei quando terminarem. Continue conversando." terminal: recovered_mouse_modes: "Modos de entrada do terminal recuperados após vazamento de eventos do mouse. Se isso se repetir, execute /new ou reinicie esta aba." recovered_cooked_mode: "Terminal recuperado de um desvio do modo cooked (a entrada deve voltar a responder normalmente)." image_badge_count: "[📎 {count} imagens anexadas]" image_badge_numbered: "[📎 Imagem #{index}]" commands: shared: more_suffix: " (+{count} mais)" set_saved: "✓ {label} definido como '{value}' (salvo na configuração)" set_session_only: "✓ {label} definido como '{value}' (somente nesta sessão)" scope_saved: "(salvo na configuração)" scope_save_failed: "(somente nesta sessão; falha ao salvar a configuração)" scope_session: "(esta sessão — use --global para persistir)" unknown_argument: "(._.) Argumento desconhecido: {arg}" usage: "Uso: {usage}" needs_active_session: "{command} precisa de uma sessão de chat ativa para executar." unavailable_no_session: "{label} indisponível (nenhuma sessão ativa)." state_on: "ON" state_off: "OFF" error: "Erro: {error}" agent_busy: "O agente está ocupado. Aguarde o turno atual terminar e depois tente {command} novamente." no_active_agent_session: "Nenhuma sessão de agente ativa." could_not_generate_diff: "Não foi possível gerar o diff" busy: short_queue: "coloca na fila para o próximo turno" short_steer: "redireciona a execução atual (após a próxima chamada de ferramenta)" short_interrupt: "redireciona a execução atual imediatamente" long_queue: "Enter colocará a entrada na fila enquanto o Hermes estiver ocupado." long_steer: "Enter redirecionará sua mensagem para a execução atual (após a próxima chamada de ferramenta)." long_interrupt: "Enter redirecionará a execução atual enquanto o Hermes estiver ocupado; /stop continua cancelando." usage: "Uso: /busy [queue|steer|interrupt|status]" status: "Modo de entrada quando ocupado: {mode}" enter_while_busy: "Enter enquanto ocupado: {behavior}" label: "Modo de entrada quando ocupado" reasoning: headline_on: "ON" headline_off: "OFF" headline_full: "COMPLETO" headline_clamped: "LIMITADO a 10 linhas" note_show: "O raciocínio do modelo será mostrado durante e após cada resposta." note_full: "A caixa de recapitulação pós-resposta imprimirá o raciocínio completo." display_on: "ativado ✓" display_off: "desativado" full_state_full: "completo" full_state_clamped: "limitado a 10 linhas" effort_line: "Esforço de raciocínio: {level}" display_line: "Exibição do raciocínio: {display} ({full})" usage: "Uso: /reasoning [--global]" display_saved: "✓ Exibição do raciocínio: {headline} (salvo)" display_off_note: "Observação: a exibição do raciocínio está OFF — execute /reasoning show para vê-lo." valid_levels: "Níveis válidos: none, minimal, low, medium, high, xhigh, max, ultra" valid_display: "Exibição: show, hide" valid_scope: "Escopo: por sessão por padrão, --global para persistir" effort_set: "✓ Esforço de raciocínio definido como '{effort}' {scope}" indicator: usage: "Uso: /indicator [{styles}]" status: "Estilo do indicador de ocupado: {style}" unknown_style: "(._.) Estilo de indicador desconhecido: {arg}" label: "Estilo do indicador de ocupado" note: "A TUI adota o novo estilo na próxima renderização." fast: not_supported: "(._.) /fast só está disponível para modelos que suportam modo rápido (OpenAI Priority Processing ou Anthropic Fast Mode)." feature_generic: "Modo rápido" feature_anthropic: "Anthropic Fast Mode" feature_openai: "Priority Processing" feature_ultrafast: "OpenAI Ultrafast" ultrafast_not_supported: "(._.) O Ultrafast só está disponível para o GPT-6 Astra (modelo atual: {model})." usage: "Uso: /fast [normal|fast|auto|cold|ultrafast|status] [--global]" status: "{feature}: {status}" set_to: "✓ {feature} definido como {value} {scope}" hatch: progress_compose: "┊ compondo spritesheet…" progress_save: "┊ salvando…" progress_drawing: "┊ desenhando {state}…" describe_prompt: "(o_o) Descreva seu pet: " usage: "(o_o) Uso: /hatch (ex.: /hatch uma raposa cibernética minúscula)" default_name: "Pet" designing: "(o_o) Projetando '{concept}'… (um minuto de chamadas ao modelo de imagem)" base_failed: "(x_x) Não foi possível gerar uma aparência base: {error}" no_base_draft: "(x_x) Nenhum rascunho base retornou — tente novamente." failed: "(x_x) Falha ao chocar: {error}" hatched: "(^_^)b {name} chocou e foi adotado — vai aparecer em instantes!" pet: is_out: "(^_^)b {name} está solto — vai aparecer em instantes." put_away_named: "(-_-)zzZ {name} foi guardado." put_away: "(-_-)zzZ Pet guardado." usage_scale: "(o_o) Uso: /pet scale (ex.: /pet scale 0.5)" scale_set: "(^_^) Escala do pet → {scale}." fetching: "(o_o) Buscando '{name}' no petdex…" adopt_failed: "(x_x) Não foi possível adotar '{name}': {error}" error: "(x_x) {error}" diff: label_working: "Não preparado" label_staged: "Preparado" label_all: "Tudo (vs HEAD)" untracked: "Não rastreados:" and_more: "... e {count} mais" more_lines: "... ({count} linhas a mais — {hint})" stat_hint: "execute /diff --stat para um resumo" stat_hint_session: "execute /diff session --stat para um resumo" not_enabled: "Os checkpoints não estão ativados, então não há linha de base da sessão.\nAtive com: hermes --checkpoints\nOu em config.yaml: checkpoints: { enabled: true }\n(O /diff simples continua funcionando — ele usa o git diretamente.)" no_session_changes: "Nenhuma alteração — o Hermes ainda não editou nenhum arquivo aqui." rollback: not_enabled: "Os checkpoints não estão ativados.\nAtive com: hermes --checkpoints\nOu em config.yaml: checkpoints: { enabled: true }" none_here_showing_all: "Nenhum checkpoint para {cwd} — mostrando todos os diretórios." all_directories: "todos os diretórios" usage_diff: "Uso: /rollback diff " no_changes_since: "Nenhuma alteração desde este checkpoint." more_lines: "... ({count} linhas a mais, mostrando as primeiras 80)" restored_all: "✅ Restaurado para o checkpoint {hash}: {reason}" restored_file: "✅ {file} restaurado do checkpoint {hash}: {reason}" snapshot_saved: "Um instantâneo pré-reversão foi salvo automaticamente." chat_turn_undone: "Turno do chat desfeito para corresponder ao estado restaurado dos arquivos." snapshot: unknown_subcommand: "Subcomando desconhecido: {subcommand}" usage: "Uso: /snapshot [list|create [rótulo]|restore |prune [N]]" none_yet: "Ainda não há instantâneos de estado." create_hint: "Crie um: /snapshot create [rótulo]" list_header: "Instantâneos de estado ({dir}/state-snapshots/):" col_num: "#" col_id: "ID" col_files: "Arquivos" col_size: "Tamanho" col_label: "Rótulo" created: "Instantâneo criado: {snapshot_id}" nothing_to_snapshot: "Nenhum arquivo de estado encontrado para o instantâneo." usage_restore: "Uso: /snapshot restore " most_recent: "Mais recente: {snapshot_id}" invalid_number: "Número de instantâneo inválido. Use 1-{max}." restored: "Estado restaurado de: {snapshot_id}" restart_recommended: "Recomenda-se reiniciar os processos do gateway/painel para que carreguem as alterações do state.db." not_found: "Instantâneo não encontrado: {snapshot_id}" usage_prune: "Uso: /snapshot prune [quantidade-a-manter]" pruned: "{deleted} instantâneo(s) antigo(s) removido(s) (mantendo {keep})." export: usage: "Uso: /export [perfil] [-o saida.tar.gz]" exported: "✓ '{name}' exportado para {path}" share_hint: "Compartilhe: o outro usuário executa /import ou `hermes profile import `." import: usage: "Uso: /import [--name ]" imported: "✓ Perfil '{name}' importado em {path}" wrapper_created: "Wrapper criado: {path}" use_it: "Use-o: hermes -p {name}" stop: none_running: "Nenhum processo em segundo plano em execução." stopping: "Parando {count} processo(s) em segundo plano..." stopped: "✅ {count} processo(s) parado(s)." interrupted_delegations: "✅ {count} delegação(ões) em segundo plano interrompida(s)." agents: running_processes: "Processos em execução: {count}" recently_finished: "Concluídos recentemente: {count}" background_delegations: "Delegações em segundo plano: {count} em execução" no_progress: " · sem progresso há {seconds}s — interrompendo" quiet: " · silencioso há {seconds}s" in_tool: "em {tool}" between_turns: "entre turnos" child_line: "└ filho {index}: {api_calls} chamadas de API · {doing}" last_activity: " · última atividade há {seconds}s" agent_running: "Agente: em execução" agent_idle: "Agente: ocioso" journey: failed: "/journey falhou: {error}" paste: no_image: "(._.) Nenhuma imagem encontrada na área de transferência" attached: "📎 Imagem #{index} anexada da área de transferência" extract_failed: "(>_<) A área de transferência tem uma imagem, mas a extração falhou" copy: nothing_yet: "Ainda não há nada para copiar." usage: "Uso: /copy [número]" invalid_number: "Número de resposta inválido. Use 1-{max}." nothing_in_responses: "Ainda não há nada para copiar nas respostas do assistente." nothing_in_response: "Não há nada para copiar nessa resposta do assistente." copied_osc52: "Resposta do assistente #{index} copiada via OSC 52 (requer suporte do terminal)" copied: "Resposta do assistente #{index} copiada para a área de transferência" failed: "Falha ao copiar para a área de transferência: {error}" image: usage: "Uso: /image ex.: /image {example}" not_found: "(>_<) Arquivo não encontrado: {path}" unsupported: "(._.) Não é um arquivo de imagem suportado: {name}" attached: "📎 Imagem anexada: {name}" now_type_prompt: "Agora digite seu prompt (ou use --image no modo de consulta única): {text}" tools: usage: "(._.) Uso: /tools {subcommand} [nome ...]" example_toolset: "Conjunto de ferramentas integrado: /tools {subcommand} web" example_mcp: "Ferramenta MCP: /tools {subcommand} github:create_issue" disabling: "Desativando {names}..." enabling: "Ativando {names}..." session_reset: "Sessão reiniciada. A nova configuração de ferramentas está ativa." profile: profile: "Perfil: {profile}" home: "Home: {home}" handoff: usage: "Uso: /handoff " usage_detail_1: "Transfere a sessão atual para o canal inicial dessa plataforma." usage_detail_2: "A sessão da CLI termina aqui; retome-a depois com /resume." already_in_flight: "A sessão já está em transferência. Aguarde a conclusão e tente novamente." queued: "Transferência de '{title}' → {platform} colocada na fila (canal inicial: {home})." waiting: "Aguardando o gateway assumir..." config_load_failed: "Não foi possível carregar a configuração do gateway: {error}" unknown_platform: "Plataforma desconhecida '{platform}'." platform_not_enabled: "A plataforma '{platform}' não está configurada/ativada no gateway." no_home_channel: "Nenhum canal inicial configurado para {platform}." set_home_hint: "Defina um primeiro com /sethome no chat de destino." session_row_failed: "Não foi possível garantir a linha da sessão no state.db: {error}" picked_up: "O gateway assumiu; transferindo..." complete: "↻ Transferência concluída. A sessão agora está ativa em {platform}." resume_hint: "Retome-a nesta CLI depois com: /resume {title}" unknown_error: "erro desconhecido" failed: "Falha na transferência: {error}" session_intact_retry: "Sua sessão da CLI está intacta. Tente /handoff novamente ou use /resume na plataforma manualmente." still_transferring: "Ainda transferindo (o agente está reproduzindo sua sessão no destino)..." taking_long: "O gateway está demorando mais que o normal para concluir a transferência." check_platform: "Verifique {platform} — a sessão ainda pode chegar lá." no_longer_waiting: "Esta CLI não está mais aguardando. Evite continuar esta sessão aqui;" retry_when_settled: "se nada chegar, tente /handoff novamente quando o estado se estabilizar." timed_out: "Tempo limite esgotado aguardando o gateway. O `hermes gateway` está em execução?" session_intact: "Sua sessão da CLI está intacta." resume: usage: "Uso: /resume " tip_find_sessions: "Dica: Use /history ou `hermes sessions list` para encontrar sessões." already_on: "Você já está nessa sessão." resumed_one: "↻ Sessão {session_id}{title} retomada ({count} mensagem do usuário, {total} no total)" resumed_other: "↻ Sessão {session_id}{title} retomada ({count} mensagens do usuário, {total} no total)" resumed_empty: "↻ Sessão {session_id}{title} retomada — sem mensagens, começando do zero." not_found: "Sessão não encontrada: {target}" not_found_hint: "Use /sessions ou `hermes sessions list` para ver as sessões disponíveis." compressed_redirect: "A sessão {session_id} foi comprimida em {resolved_id}; retomando a descendente com sua transcrição." sessions: none_yet: "(._.) Ainda não há sessões anteriores." branch: branched_one: "⑂ Sessão \"{title}\" ramificada ({count} mensagem do usuário)" branched_other: "⑂ Sessão \"{title}\" ramificada ({count} mensagens do usuário)" original_session: "Sessão original: {session_id}" branch_session: "Sessão do ramo: {session_id}" worktree: active: "Worktree ativo: {path}" branch: "Branch: {branch}" none_active: "Nenhum worktree ativo para esta sessão." hint_new: "/worktree new [nome] — cria um e move esta sessão para ele" hint_prune: "/worktree prune — recupera árvores obsoletas e branches já mescladas" not_in_repo_note: "(fora de um repositório git)" unknown_subcommand: "Subcomando /worktree desconhecido: {subcommand}" usage: "Uso: /worktree [new [nome] | list]" new_requires_repo: "❌ /worktree new exige estar dentro de um repositório git." not_in_repo: "Fora de um repositório git." actions_planned: "{count} ação(ões) planejada(s)." actions_done: "{count} ação(ões) concluída(s)." nothing_to_reclaim: "Nada a recuperar — as árvores/branches restantes contêm trabalho real." preserved: "{count} árvore(s) com trabalho real preservada(s):" list_failed: "Não foi possível listar os worktrees." enter_failed: "⚠ Worktree criado, mas não foi possível entrar nele: {error}" ready: "✅ Worktree pronto: {path}" tools_in_worktree: "As ferramentas de terminal e de arquivos agora operam no worktree." personality: title: "(^o^)/ Personalidades" none_option: "(sem camada de personalidade)" usage: "Uso: /personality (* = ativa)" unknown: "(._.) Personalidade desconhecida: {name}" available: "Disponíveis: none, {available}" scope_saved: "(salvo na configuração)" scope_session: "(somente nesta sessão)" cleared: "{face} Personalidade removida {scope}" cleared_note: "Sem camada de personalidade — usando o comportamento base do agente." set_to: "{face} Personalidade definida como '{name}' {scope}" cron: repeat_must_be_integer: "(._.) --repeat deve ser um número inteiro" unknown_command: "(._.) Comando cron desconhecido: {subcommand}" available: "Disponíveis: list, add, edit, pause, resume, run, remove" overview_title: "(^_^) Tarefas Agendadas" overview_commands: "Comandos:" overview_usage: "/cron list\n/cron add \"every 2h\" \"Verificar status do servidor\" [--skill blogwatcher]\n/cron edit --schedule \"every 4h\" --prompt \"Nova tarefa\"\n/cron edit --skill blogwatcher --skill maps\n/cron edit --remove-skill blogwatcher\n/cron edit --clear-skills\n/cron pause \n/cron resume \n/cron run \n/cron remove " current_jobs: "Tarefas atuais:" skills: "Skills: {skills}" skills_none: "Skills: nenhuma" next_short: "Próxima" no_jobs_hint: "Nenhuma tarefa agendada. Use '/cron add' para criar uma." no_jobs: "(._.) Nenhuma tarefa agendada." list_header: "Tarefas agendadas:" id: "ID: {job_id}" name: "Nome: {name}" state: "Estado: {state}" schedule: "Agendamento: {schedule}" schedule_repeat: "Agendamento: {schedule} ({repeat})" next_run: "Próxima execução: {value}" next_run_na: "Próxima execução: N/D" prompt: "Prompt: {prompt}" status_delivery_failed: "delivery_failed: {error}" status_error: "erro: {error}" last_run: "Última execução: {when} ({status})" usage_add: "(._.) Uso: /cron add " need_prompt_or_skill: "(._.) Forneça um prompt ou pelo menos uma skill" create_failed: "(x_x) Falha ao criar a tarefa: {error}" created: "(^_^)b Tarefa criada: {job_id}" usage_edit: "(._.) Uso: /cron edit [--schedule ...] [--prompt ...] [--skill ...]" job_not_found: "(._.) Tarefa não encontrada: {job_id}" update_failed: "(x_x) Falha ao atualizar a tarefa: {error}" updated: "(^_^)b Tarefa atualizada: {job_id}" usage_action: "(._.) Uso: /cron {subcommand} " pause_failed: "(x_x) Falha ao pausar a tarefa: {error}" resume_failed: "(x_x) Falha ao retomar a tarefa: {error}" run_failed: "(x_x) Falha ao executar a tarefa: {error}" remove_failed: "(x_x) Falha ao remover a tarefa: {error}" removed: "(^_^)b Tarefa removida: {name} ({job_id})" did_not_run: "(x_x) A tarefa não foi executada: {name} ({job_id})\n {reason}" paused: "(^_^)b Tarefa pausada: {name} ({job_id})" resumed: "(^_^)b Tarefa retomada: {name} ({job_id})" triggered: "(^_^)b Tarefa disparada: {name} ({job_id})" suggestions: failed: "O comando de sugestões falhou: {error}" blueprint: failed: "O comando de blueprint do cron falhou: {error}" curator: failed: "(._.) curator: {error}" kanban: failed: "(._.) erro do kanban: {error}" memory: unknown_subcommand: "Subcomando /memory desconhecido. Use: pending, approve , reject , approval ." learn: from_description: "⚡ Aprendendo uma skill a partir do que você descreveu..." from_conversation: "⚡ Aprendendo uma skill a partir desta conversa..." plan: planning: "📋 Planejando: {task}" from_conversation: "📋 Planejando a partir do contexto desta conversa..." init: updating: "⚡ Atualizando AGENTS.md a partir de uma varredura do projeto..." generating: "⚡ Gerando AGENTS.md a partir de uma varredura do projeto..." background: usage: "Uso: /bg \nExemplo: /bg Resuma as principais notícias do HN de hoje\n(Para uma pergunta paralela sobre esta conversa, use /btw .)\nA tarefa é executada em uma sessão separada e os resultados aparecem aqui ao terminar." no_credentials: "(>_<) Não é possível iniciar a tarefa em segundo plano: nenhuma credencial válida." started: "🔄 Tarefa em segundo plano #{number} iniciada: \"{preview}\"" task_id: "ID da tarefa: {task_id}" keep_chatting: "Você pode continuar conversando — os resultados aparecerão ao terminar." label: "Tarefa em segundo plano #{number}" complete: "✅ Tarefa em segundo plano #{number} concluída" prompt: "Prompt: \"{preview}\"" title_suffix: "(segundo plano #{number})" no_response: "(Nenhuma resposta gerada)" side_result: complete: "{label} concluída" failed: "❌ {label} falhou: {error}" login: label: "Login" title_suffix: "(login)" no_result: "(Nenhum resultado)" btw: usage: "Uso: /btw \nExemplo: /btw em qual arquivo estava aquele erro?\nResponde a uma pergunta rápida sobre esta conversa sem interrompê-la.\n(Para uma tarefa independente em segundo plano, use /bg .)" no_credentials: "(>_<) Não é possível responder à pergunta paralela: nenhuma credencial válida." header: "💬 /btw: \"{preview}\"" title_suffix: "(btw)" no_answer: "(Nenhuma resposta gerada)" bundles: unavailable: "Subsistema de bundles indisponível: {error}" none_installed: "Nenhum bundle de skills instalado." create_hint: "Crie um com: hermes bundles create --skill --skill " directory: "Diretório: {dir}" title: "Bundles de Skills" installed_count: "({count} instalados):" default_desc: "Carregar {count} skills" skills_count: "({count} skills)" invoke_hint: "Invoque um bundle com /. Gerencie com `hermes bundles`." browser: engine_not_in_use: "⚠ browser.engine é 'lightpanda', mas NÃO está em uso: {reason}" engine_lightpanda: "Motor: Lightpanda — {reason} (sem capturas de tela)" binary: "Binário: {path}" binary_not_found: "⚠ binário do lightpanda não encontrado — {hint}" use_usage: "Uso: /browser use [off]" use_on_hint: "/browser use — mudar para o modo Browser Use (browser_exec via CLI 3.0)" use_off_hint: "/browser use off — voltar às ferramentas de navegador integradas" use_enabled: "🌐 Modo Browser Use ativado — browser_exec via Browser Use CLI 3.0" use_disabled: "🌐 Modo Browser Use desativado — ferramentas de navegador integradas restauradas" session_reset: "Sessão reiniciada. A nova configuração de ferramentas está ativa." scheme_missing: "(ausente)" unsupported_scheme: "⚠ Esquema de URL do navegador não suportado: {scheme} (esperado um de: http, https, ws, wss)" invalid_port: "⚠ Porta inválida na URL do navegador: {url}" missing_host: "⚠ Host ausente na URL do navegador: {url}" port_occupied: "⚠ A porta {port} está ocupada por outro aplicativo que não é um navegador CDP" port_occupied_detail: "(um depurador de IDE ou servidor de desenvolvimento pode estar usando-a) — iniciando na porta {launch_port} em vez disso..." launching: "Nenhum navegador da família Chromium está em execução com depuração remota — tentando iniciar..." launch_failed: "⚠ Não foi possível iniciar automaticamente um navegador da família Chromium" launch_manually: "Inicie um navegador da família Chromium manualmente:" no_executable: "Nenhum executável de navegador da família Chromium suportado foi encontrado neste ambiente" launched: "✓ Navegador da família Chromium iniciado e escutando na porta {port}" not_responding: "⚠ Navegador iniciado, mas a porta {port} ainda não responde" try_again: "Tente novamente em alguns segundos — a instância de depuração ainda pode estar iniciando" already_listening: "✓ O navegador da família Chromium já está escutando em {url}" port_unreachable: "⚠ A porta {port} não está acessível em {url}" not_connected: "Navegador não conectado — inicie um navegador da família Chromium com depuração remota e tente /browser connect novamente" connected: "🌐 Navegador conectado a um navegador da família Chromium ativo via CDP" endpoint: "Endpoint: {url}" already_default: "O navegador não está conectado a um navegador da família Chromium ativo (já está usando o modo padrão)" disconnected: "🌐 Navegador desconectado do navegador da família Chromium ativo" reverted: "Ferramentas de navegador revertidas para o modo padrão (headless local ou fornecedor em nuvem)" status_lightpanda: "🌐 Navegador: Lightpanda local (agent-browser --engine lightpanda)" status_lightpanda_note: "⚡ Lightpanda: navegação mais rápida, sem suporte a capturas de tela" status_lightpanda_fallback: "Fallback automático para Chromium em capturas de tela e comandos com falha" status_chrome: "🌐 Navegador: Chromium headless local (agent-browser --engine chrome)" status_auto: "🌐 Navegador: Chromium headless local (agent-browser)" status_browser_use: "🌐 Navegador: modo Browser Use (browser_exec via Browser Use CLI 3.0)" status_browser_use_note: "Chrome local via CDP ou navegadores em nuvem do Browser Use" status_use_off_hint: "/browser use off — voltar às ferramentas de navegador integradas" status_connected: "🌐 Navegador: conectado a um navegador da família Chromium ativo via CDP" status_reachable: "Status: ✓ acessível" status_unreachable: "Status: ⚠ não acessível (o navegador pode não estar em execução)" status_cloud: "🌐 Navegador: {provider} (nuvem)" status_connect_hint: "/browser connect — conectar ao seu navegador da família Chromium ativo" status_disconnect_hint: "/browser disconnect — voltar ao padrão" usage: "Uso: /browser connect|disconnect|status|use" usage_connect: "connect Conecta as ferramentas de navegador à sua sessão ativa de navegador da família Chromium" usage_disconnect: "disconnect Volta ao backend de navegador padrão" usage_status: "status Mostra o modo atual do navegador" usage_use: "use [off] Muda para o modo Browser Use (CLI 3.0) / volta às ferramentas integradas" heartbeat: label: "Heartbeats" paused: "⏸ Heartbeat pausado: {prompt}" none_set: "Nenhum heartbeat definido." none_to_resume: "Nenhum heartbeat para retomar." resumed: "▶ Heartbeat retomado (a cada {interval}): {prompt}" cleared: "✓ Heartbeat removido." usage: "Uso: /heartbeat every (ex.: /heartbeat every 10m Verificar CI)" usage_also: "Também: /heartbeat status | pause | resume | clear" interval_too_small: "Intervalo muito pequeno — o mínimo é {min_seconds}s." prompt_required: "Uso: /heartbeat every — o prompt é obrigatório." invalid_label: "Heartbeat inválido" set: "♥ Heartbeat definido (a cada {interval}): {prompt}" set_note: "Dispara como um turno normal sempre que a sessão estiver ociosa e o intervalo tiver passado. /heartbeat pause | resume | clear para gerenciar; existe apenas enquanto este processo do Hermes estiver em execução — use `hermes cron` para agendamentos duráveis." refine: nothing_yet: "Nada para refinar ainda — envie uma mensagem primeiro." empty: "Nada para refinar ainda — a conversa está vazia." failed: "Falha ao iniciar /refine: {error}" focus_suffix: " (foco: {focus})" started: "⚗ Revisando esta conversa em segundo plano{focus} — quaisquer atualizações de memória/skills serão informadas ao concluir." review: nothing_yet: "Nada para revisar ainda — envie uma mensagem primeiro." failed: "Falha ao iniciar /review: {error}" goal: label: "Objetivos" continuing: "Continuando agora — dando o próximo passo." send_to_kick: "Envie qualquer mensagem para iniciar o próximo passo." loop: label: "Loops" goal_defers_note: "Observação: um /goal ativo está conduzindo esta sessão — os despertares do loop ficam adiados até o objetivo concluir, pausar ou ser estacionado." subgoal: no_goal: "Nenhum objetivo ativo. Defina um com /goal ." usage_remove: "Uso: /subgoal remove " remove_needs_int: "/subgoal remove: deve ser um inteiro (índice a partir de 1)." removed: "✓ Subobjetivo {index} removido: {text}" cleared_one: "✓ {count} subobjetivo removido." cleared_other: "✓ {count} subobjetivos removidos." none_to_clear: "Nenhum subobjetivo para remover." added: "✓ Subobjetivo {index} adicionado: {text}" skin: unavailable: "Motor de skins não disponível." current: "Skin atual: {name}" available_header: "Skins disponíveis:" usage: "Uso: /skin " custom_hint: "Skins personalizadas: coloque um arquivo YAML em {dir}/skins/" unknown: "Skin desconhecida: {name}" available: "Disponíveis: {names}" saved_suffix: " (salva)" set_to: "Skin definida como: {name}{saved}" banner_note: "Observação: as cores do banner serão atualizadas no próximo início de sessão." colors_updated: "Cores do prompt + TUI atualizadas." prompt_compose: editor_header: "#! Escreva seu prompt abaixo. Linhas que começam com '#!' são ignoradas.\n#! Salve e saia para enviar; deixe vazio para cancelar." editor_failed: "(>_<) Não foi possível abrir o editor: {error}" empty: "(._.) Prompt vazio — nada enviado." focus: usage: "Uso: /focus [on|off|status]" toggle: save_failed: "Falha ao salvar a configuração {setting} em config.yaml" footer: usage: "/footer [on|off|status]" label: "Rodapé de execução" fields: "Campos: {fields}" timestamps: usage: "/timestamps [on|off|status]" label: "Carimbos de hora das mensagens" update: managed_action: "atualizar o Hermes Agent" choice_update: "Atualizar Agora" choice_update_desc: "sair da sessão atual e atualizar o Hermes Agent" choice_cancel: "Cancelar" choice_cancel_desc: "manter a sessão atual" title: "☤ Atualizar o Hermes Agent" detail: "Isto encerrará a sessão atual e executará `hermes update`." cancelled: "🟡 /update cancelado." launching: "☤ Iniciando atualização..." voice: unknown_subcommand: "Subcomando de voz desconhecido: {subcommand}" usage: "Uso: /voice [on|off|tts|status]" wake: unknown_subcommand: "Subcomando de wake desconhecido: {subcommand}" usage: "Uso: /wake [on|off|status]" enabled_in_config: "Palavra de ativação ativada na configuração (wake_word.enabled: true)." disabled_in_config: "Palavra de ativação desativada na configuração (wake_word.enabled: false)." tip_line: "✦ Dica: {tip}" banner: context_too_low: "⚠️ O comprimento de contexto é de apenas {tokens} tokens — provavelmente é baixo demais para uso do agente com ferramentas." context_minimum: "O Hermes precisa de pelo menos {tokens} tokens. Os esquemas de ferramentas + prompt do sistema usam um prefixo fixo grande." fix_ollama: "Correção para Ollama: OLLAMA_CONTEXT_LENGTH={tokens} ollama serve" fix_lm_studio: "Correção para LM Studio: defina o comprimento de contexto nas configurações do modelo → recarregue o modelo" fix_local_server: "Correção: inicie seu servidor com pelo menos {tokens_k}K de contexto (llama.cpp: -c {tokens}) ou defina model.ollama_num_ctx em config.yaml com a janela que ele realmente serve" fix_config: "Correção: defina model.context_length em config.yaml ou aumente a configuração de contexto do seu servidor" hermes_models_not_agentic: "⚠ Os modelos Hermes 3 e 4 da Nous Research NÃO são agênticos e não foram projetados para uso com o Hermes Agent." hermes_models_lack_tools: "Eles não têm as capacidades de chamada de ferramentas exigidas por fluxos de trabalho de agente. Considere usar um modelo agêntico (Claude, GPT, Gemini, DeepSeek etc.)." hermes_models_switch_hint: "Troque com: /model sonnet ou /model gpt5" project_skills_loaded: "◆ {count} skill(s) de projeto carregada(s) deste repositório" project_skills_untrusted: "◆ {count} skill(s) de projeto encontrada(s) em {root}, mas não carregada(s) — execute `hermes skills trust` para ativá-las." command: unknown_nothing_sent: "Comando desconhecido {command} — nada foi enviado.{hint}" did_you_mean_one: "Você quis dizer {suggestion}?" type_help: "Digite /help para ver a lista completa." ambiguous: "Comando ambíguo: {command}" did_you_mean_many: "Você quis dizer: {candidates}?" config: title: "(^_^) Configuração" loaded: "(carregado)" not_found: "(não encontrado)" microsoft_entra_id: "Microsoft Entra ID" api_key_not_set: "Não definida!" value_not_set: "não definido" section_model: "Modelo" section_terminal: "Terminal" section_agent: "Agente" section_session: "Sessão" label_model: "Modelo:" label_base_url: "URL base:" label_api_key: "Chave de API:" label_environment: "Ambiente:" label_ssh_target: "Destino SSH:" label_working_dir: "Diretório de trabalho:" label_timeout: "Tempo limite:" label_max_turns: "Máx. de turnos:" label_toolsets: "Conjuntos de ferramentas:" label_verbose: "Detalhado:" label_started: "Iniciado em:" label_config_file: "Arquivo de configuração:" context: header: "🧠 Uso de contexto — {model}" compute_failed: "(._.) Não foi possível calcular a distribuição do contexto: {error}" error: auth: "Sua chave de {provider} foi rejeitada. Execute `hermes model` para informá-la novamente." billing: "Sua conta de {provider} está sem crédito. Recarregue no fornecedor ou execute /model para trocar." model_not_found: "'{model}' não está disponível em {provider}. Execute /model para escolher um modelo válido." rate_limit: "Limite de taxa atingido em {provider}; aguarde um minuto ou use /model para trocar." upstream_blocked: "Um firewall/CDN na frente de {provider} bloqueou a solicitação (não é sua chave). Defina um User-Agent via extra_headers ou use /model para trocar." overloaded: "{provider} está sobrecarregado no momento. Envie /retry daqui a pouco ou use /model para trocar." server_error: "{provider} teve um erro interno. Envie /retry daqui a pouco ou use /model para trocar." timeout: "{provider} não respondeu a tempo. Envie /retry ou use /model para trocar." unknown: "A solicitação ao modelo falhou. Execute /model para trocar ou `hermes doctor` para verificar a configuração." the_provider: "o fornecedor" the_current_model: "o modelo atual" with_details: "{lead}\nDetalhes: {details}" agent_init_failed: "O Hermes não conseguiu iniciar a conexão com o modelo: {error}. Sua mensagem não foi enviada. Execute `hermes doctor` para verificar a configuração ou /model para escolher outro fornecedor." gateway: starting: "Iniciando o Hermes Gateway (plataformas de mensagens)..." gateway_status: header: "(✿◠‿◠) Status do Gateway" platform_config_header: "Configuração das plataformas de mensagens:" enabled: "Ativado" not_configured: "Não configurado ({env_var})" conversations_persist: "As conversas persistem até /new ou /reset." to_start: "Para iniciar o gateway:" config_file: "Arquivo de configuração: {path}" load_error: "Erro ao carregar a configuração do gateway: {error}" to_configure: "Para configurar o gateway:" step_env_vars: "1. Defina as variáveis de ambiente:" step_config: "2. Ou ajuste as configurações em {path}" help: header: "(^_^)? Comandos Disponíveis" section_session: "Sessão" section_configuration: "Configuração" section_tools_skills: "Ferramentas e Skills" section_info: "Informações" section_exit: "Sair" section_context: "Contexto" section_background_automation: "Segundo Plano e Automação" usage_suffix: "{description} (uso: /{command} {args})" alias_suffix: "{description} (alias de /{command})" skill_commands: "Comandos de Skills" skill_bundles: "Bundles de Skills" quick_commands: "Comandos Rápidos" n_installed: "{count} instalados" n_configured: "{count} configurados" n_skills: "{count} skills" load_n_skills: "Carregar {count} skills" no_skill_commands: "Nenhum comando de skill instalado." matching_query: "correspondentes a '{query}'" to_list_them: "para listá-los" filtered_by: "Filtrado por '{query}' — execute /help para ver a lista completa." tip_line: "Dica: /help skills lista os comandos de skills · /help filtra · Ctrl+P abre a paleta de comandos" multiline_hint: "Multilinha: Ctrl+J, Alt+Enter ou \\\\+Enter para uma nova linha" draft_editor_hint: "Editor de rascunho: Ctrl+G (Alt+G no VSCode/Cursor)" attach_image_hint: "Anexar imagem: /image {path} ou comece seu prompt com o caminho de uma imagem local" paste_image_hint: "Colar imagem: Alt+V (ou /paste)" insights: no_session_data: "Ainda não há dados de sessão." mcp_watch: changed_reload_skipped: "🔄 A configuração dos servidores MCP mudou — recarga ignorada (recarga automática desativada)." not_applied_run: "As novas configurações ainda NÃO foram aplicadas. Para aplicá-las agora, execute:" cache_note: "⚠️ Observação: /reload-mcp reconstrói o conjunto de ferramentas e invalida o cache de prompt do fornecedor (a próxima mensagem reenvia todos os tokens de entrada)." changed_reloading: "🔄 A configuração dos servidores MCP mudou — reconectando..." plugin: command_error: "Erro no comando do plugin: {error}" quick: no_target: "O comando rápido '{command}' não tem destino definido" unsupported_type: "O comando rápido '{command}' tem um tipo não suportado (suportados: 'exec', 'alias')" no_command: "O comando rápido '{command}' não tem comando definido" no_output: "O comando não retornou saída" timed_out: "O comando rápido excedeu o tempo limite (30s)" error: "Erro no comando rápido: {error}" reload_mcp: title: "⚠️ /reload-mcp — Aviso de invalidação do cache de prompt" detail: "Recarregar os servidores MCP reconstrói o conjunto de ferramentas desta sessão e\ninvalida o cache de prompt do fornecedor. A próxima mensagem\nreenviará todos os tokens de entrada (pode ser caro em modelos de contexto longo\nou de raciocínio intenso)." choice_once: "Aprovar Uma Vez" choice_once_hint: "recarregar agora" choice_always: "Aprovar Sempre" choice_always_hint: "recarregar agora e silenciar este aviso permanentemente" choice_cancel: "Cancelar" choice_cancel_hint: "manter as ferramentas MCP inalteradas" unchanged: "Ferramentas MCP inalteradas." always_msg: "🔒 As próximas chamadas de /reload-mcp serão executadas sem confirmação." once_verb: "recarregando" reloading: "🔄 Recarregando servidores MCP..." reconnected: "♻️ Reconectados: {names}" added: "➕ Adicionados: {names}" removed: "➖ Removidos: {names}" tools_available: "🔧 {tools} ferramenta(s) disponível(is) de {servers} servidor(es)" agent_updated: "✅ Agente atualizado — {count} ferramenta(s) disponível(is)" reload_skills: reloading: "🔄 Recarregando skills..." total: "📚 {count} skill(s) disponível(is)" added_header: "➕ Skills Adicionadas:" removed_header: "➖ Skills Removidas:" session_store: unavailable_rich: "[bold yellow]⚠ Armazenamento de sessões indisponível[/bold yellow] — esta conversa [bold]NÃO será salva[/bold] e não poderá ser retomada depois. A busca em sessões anteriores também está desativada.\n Motivo: {reason}.\n {action}\n [dim]Detalhes: {details}[/dim]" unavailable_plain: "AVISO: Armazenamento de sessões indisponível — esta conversa NÃO será salva e não poderá ser retomada depois. Motivo: {reason}. {action}" shell: command_denied: "Comando negado: {reason}" flagged_as_dangerous: "sinalizado como perigoso" exited: "! saiu com {code}" skills: bundle_load_failed: "Falha ao carregar o bundle para {command}" loading_bundle: "Carregando bundle: {name} ({count} skills)" skipped_missing: "Skills ausentes ignoradas: {names}" stacked_load_failed: "Falha ao carregar skills empilhadas para {command}" loading_stacked: "Carregando {count} skills empilhadas: {names}" loading_skill: "Carregando skill: {name}" skill_load_failed: "Falha ao carregar a skill para {command}" tools: none_available: "(;_;) Nenhuma ferramenta disponível" header: "(^_^)/ Ferramentas Disponíveis" total: "Total: {count} ferramentas ヽ(^o^)ノ" toolsets: header: "(^_^)b Conjuntos de Ferramentas Disponíveis" currently_enabled_legend: "(*) = ativado atualmente" tip_enable_all: "Dica: use 'all' ou '*' para ativar todos os conjuntos de ferramentas" example: "Exemplo: python cli.py --toolsets web,terminal" usage: unknown_subcommand: "Subcomando /usage desconhecido: {args}. Tente /usage ou /usage reset [--force]." reset_wrong_provider: "Redefinições de uso acumulado só estão disponíveis no fornecedor openai-codex." reset_switch_hint: "Troque com `/model` ou `hermes auth` primeiro." checking_reset_credits: "⏳ Verificando créditos de redefinição acumulados..." codex_timeout: "❌ Tempo limite excedido ao falar com o backend do Codex — tente novamente em breve." no_api_calls: "(._.) Nenhuma chamada de API feita ainda nesta sessão." header_session: "📊 Uso de Tokens da Sessão" label_model: "Modelo:" label_input_tokens: "Tokens de entrada:" label_output_tokens: "Tokens de saída:" label_reasoning_subset: "↳ Raciocínio (subconjunto):" label_prompt_tokens_total: "Tokens de prompt (total):" label_completion_tokens: "Tokens de conclusão:" label_total_tokens: "Total de tokens:" label_api_calls: "Chamadas de API:" label_session_duration: "Duração da sessão:" label_current_context: "Contexto atual:" label_messages: "Mensagens:" label_compressions: "Compressões:" verbose: label_off: "Progresso de ferramentas: OFF" detail_off: "modo silencioso, apenas a resposta final." label_new: "Progresso de ferramentas: NEW" detail_new: "mostrar cada ferramenta nova (pular repetições)." label_all: "Progresso de ferramentas: ALL" detail_all: "mostrar cada chamada de ferramenta." label_verbose: "Progresso de ferramentas: VERBOSE" detail_verbose: "argumentos completos, resultados e blocos de raciocínio." whoami: you_label: "Você:" you_value: "cli (terminal local)" user_label: "Usuário:" tier_label: "Nível:" tier_value: "irrestrito" slash_commands_label: "Comandos slash:" slash_commands_value: "todos disponíveis" worktree: shallow_clone_keeping: "⚠ Clone superficial — não é possível verificar o estado de push; mantendo: {path}" next_session_deepens: "A próxima sessão `hermes -w` aprofunda o clone e remove worktrees já mescladas automaticamente." unpushed_keeping: "⚠ A worktree tem commits não enviados (push); mantendo: {path}" uncommitted_keeping: "⚠ A worktree tem alterações não commitadas; mantendo: {path}" clean_up_manually: "Para limpar manualmente: git worktree remove --force {path}" cleaned_up: "✓ Worktree limpa: {path}" display: verb: web_search: "Pesquisando na web" web_extract: "Lendo" browser_navigate: "Navegando" browser_click: "Clicando" browser_type: "Digitando" read_file: "Lendo" write_file: "Escrevendo" patch: "Editando" search_files: "Pesquisando arquivos" terminal: "Executando" execute_code: "Executando código" image_generate: "Gerando imagem" video_generate: "Gerando vídeo" text_to_speech: "Gerando fala" vision_analyze: "Analisando a imagem" session_search: "Pesquisando sessões anteriores" skill_view: "Lendo skill" skills_list: "Listando skills" skill_manage: "Atualizando skill" delegate_task: "Delegando" cronjob_manage: "Agendando" clarify: "Perguntando" memory: "Atualizando memória" todo_list: "Atualizando tarefas" verb_connector: search: " por " default: " " bridge_generating: tool_call: "uma chamada de ferramenta" tool_search: "uma busca de ferramentas" tool_describe: "detalhes da ferramenta" status_phrase: verb: "está {verb}" using_tool: "está usando {tool}" preview: shell_plus_one: "{first} + {count} comando" shell_plus_many: "{first} + {count} comandos" delegate_tasks: "{count} tarefas: {goals}" delegate_parallel_tasks: "{count} tarefas paralelas" todo_verb_updating: "atualizando" todo_verb_planning: "planejando" todo_reading: "lendo lista de tarefas" todo_tasks: "{verb} {count} tarefa(s)" missing_old_text: "" send_message_to: "para {target}: \"{message}\"" session_search_recall: "lembrar: \"{query}\"" diff: review_header: " ┊ diff de revisão" omitted_lines: "… {count} linha(s) de diff omitida(s)" omitted_files: " em {count} arquivo(s)/seção(ões) adicional(is)" thinking_verbs: "ponderando,contemplando,divagando,cogitando,ruminando,deliberando,remoendo,refletindo,processando,raciocinando,analisando,computando,sintetizando,formulando,idealizando" spinner: tool_line: " [ferramenta] {message}" done_line: " [concluído] {message}{elapsed}" failure: file_not_found: "Arquivo não encontrado: {name}" terminal_backend_unavailable: "backend do terminal indisponível" exit_code: " [saída {code}]" memory_full: " [cheia]" generic: " [erro]" generic_word: "erro" cute: verb: search: "buscar" fetch: "obter" terminal: "$" read: "ler" write: "escrever" patch: "patch" find: "localizar" grep: "grep" navigate: "navegar" snapshot: "instantâneo" click: "clicar" type: "digitar" scroll: "rolar" back: "voltar" press: "pressionar" images: "imagens" vision: "visão" plan: "plano" recall: "lembrar" memory: "memória" skills: "skills" skill: "skill" create: "criar" speak: "falar" send: "enviar" cron: "cron" exec: "exec" browser: "navegador" delegate: "delegar" proc: "proc" fetch_pages: "páginas" todo_progress: "{done}/{total} tarefa(s)" todo_reading: "lendo tarefas" todo_update_progress: "atualizar {done}/{total} ✓" todo_update_count: "atualizar {count} tarefa(s)" todo_count: "{count} tarefa(s)" cron_task_fallback: "tarefa" cron_create: "criar {label}" cron_listing: "listando" delegate_parallel: "paralelo" process_list: "ls processos" snapshot_full: "completo" snapshot_compact: "compacto" images_extracting: "extraindo" vision_analyzing_page: "analisando página" skills_list: "listar {category}" skills_all: "todas" scroll: up: "cima" down: "baixo" left: "esquerda" right: "direita" fallback_tool_name: "ferramenta" fallback_done: "concluído" completed: "┊ ⚡ {tool} concluído {duration}" iteration_progress: unbounded: "iteração {n}" bounded: "iteração {n}/{max}" review: routing_fallback_warning: "⚠ auxiliary.background_review.provider='{task_provider}' (modelo '{task_model}') não pôde ser roteado ({error}); usando {provider}/{model} como alternativa" reasoning_effort_warning: "⚠ auxiliary.background_review.reasoning_effort='{effort}' não tem efeito enquanto o modelo de revisão não for o modelo principal" memory_op_line: "{label} {glyph} {preview}" skill_patched_verbose: "📝 Skill '{name}' modificada: \"{old}\" → \"{new}\"" skill_changed_verbose: "📝 Skill '{name}' {verb}: {description}" skill_message_verbose: "📝 {message}" skill_action: "Skill {action}" label_updated: "Atualização: {label}" skill_result: "Skill '{name}' {verb}{path}" skill_verb: created: "criada" rewritten: "reescrita" patched: "modificada" written: "gravada" removed: "removida" deleted: "excluída" label: skill: "Skill" memory: "Memória" user: "Perfil do usuário" summary_cli: " 💾 Revisão de autoaperfeiçoamento: {summary}" summary_callback: "💾 Revisão de autoaperfeiçoamento: {summary}" aux_failure_label: "revisão em segundo plano" notice: uncompressed_context_overflow: "⚠️ O contexto da sessão (~{tokens} tokens) excede a janela de contexto do modelo (~{context_length} tokens) com a compressão desativada (compression.enabled: false). Use /compact para comprimir o histórico ou ative a compressão em config.yaml." explainer: no_reply_prefix: "⚠️ Sem resposta: " empty_response: "{model} não produziu uma resposta desta vez, mesmo após novas tentativas. Envie `continue` para tentar novamente ou troque de modelo com /model." exit: all_retries_exhausted_no_response: "o fornecedor do modelo não respondeu após todas as tentativas. Envie /retry ou troque de modelo com /model." partial_stream_recovery: "o streaming parou antes do fim e apenas uma resposta parcial foi recuperada. Envie `continue` para retomar de onde parou." fallback_prior_turn_content: "nenhum conteúdo novo foi produzido neste turno; exibindo o contexto anterior recuperado. Envie `continue` para tentar novamente." redirect_restart_limit_exceeded: "a solicitação foi cancelada por uma nova correção em todas as tentativas, então o turno foi encerrado em vez de tentar novamente para sempre. Sua última correção está na fila como a próxima mensagem." rebuilt_restart_limit_exceeded: "todos os fornecedores da cadeia de fallback continuaram falhando em sequência, então o turno foi encerrado em vez de tentar novamente para sempre. Envie `continue` ou troque de fornecedor." budget_exhausted: "o orçamento de iterações/custo por turno se esgotou antes de uma resposta final. Envie `continue` para prosseguir." ollama_runtime_context_too_small: "a janela de contexto do modelo local era pequena demais para concluir. Aumente o tamanho do contexto ou use um modelo maior." pending_tool_result: "o turno foi encerrado enquanto um resultado de ferramenta ainda estava pendente e o modelo não produziu texto de continuação. Envie `continue` para que ele resuma." interrupted_during_api_call: "a solicitação foi interrompida no meio da chamada, antes de uma resposta ser recebida. Envie `continue` para tentar novamente." max_iterations_reached: "o limite máximo de iterações de ferramenta foi atingido antes de uma resposta final. Envie `continue` para prosseguir ou aumente `max_iterations`." error_near_max_iterations: "ocorreu um erro perto do limite de iterações, antes de uma resposta final. Verifique a saída da ferramenta acima e então envie `continue`." repeated_outer_errors: "o turno continuou falhando com erros repetidos e foi encerrado antecipadamente em vez de tentar novamente para sempre. Verifique os erros acima e então envie `continue` para tentar de novo." persistence: compression: "o turno foi encerrado porque outro processo estava comprimindo esta sessão. Sua mensagem já deve estar salva — envie-a novamente quando a compressão terminar." compression_closed: "o turno foi encerrado porque esta sessão foi rotacionada pela compressão de contexto e sua continuação ativa não pôde ser adotada. O armazenamento em si está íntegro — atualize o cliente (ou inicie um novo turno) para que ele use o novo id de sessão e então envie sua mensagem novamente." turn_lease: "o turno foi encerrado porque outro processo do Hermes assumiu esta sessão. Sua resposta não foi salva — aguarde o outro processo terminar e então envie sua mensagem novamente." session_row_missing: "esta sessão foi excluída do armazenamento enquanto o chat ainda estava aberto, e o Hermes não conseguiu recriá-la, então esta mensagem não foi salva. Envie sua mensagem novamente; se continuar falhando, execute `hermes {profile_arg}doctor`." locked: "o turno foi encerrado porque o armazenamento de sessões estava ocupado (outro processo do Hermes estava gravando no banco de dados de estado). Sua mensagem já deve estar salva — envie-a novamente em instantes." replaced: "o arquivo do banco de dados de sessões foi substituído enquanto o Hermes estava em execução, então esta mensagem não foi salva (uma cópia fica guardada em {home}/sessions/). Pare o Hermes (`hermes {profile_arg}gateway stop`), execute `hermes {profile_arg}doctor` — não `hermes {profile_arg}doctor --fix`, que repararia o arquivo errado no lugar — depois inicie-o de novo e envie sua mensagem mais uma vez. Os passos avançados de recuperação estão no log." deleted_wal: "outro processo do Hermes ainda mantém uma cópia antiga do write-ahead log do banco de dados de sessões, então o Hermes parou de gravar para manter o arquivo seguro e esta mensagem não foi salva (uma cópia fica guardada em {home}/sessions/). Nada foi perdido. Encerre todos os processos do Hermes neste perfil (app Desktop, `hermes {profile_arg}gateway stop`, painel, cron), execute `hermes {profile_arg}doctor` — ele indica qualquer processo que ainda esteja segurando o log — depois inicie o Hermes de novo e envie sua mensagem mais uma vez. Não execute `doctor --fix` nem exclua arquivos state.db enquanto eles estiverem em execução. Guia: {recovery_docs}" corrupt: "o turno foi encerrado porque o banco de dados de estado relatou corrupção estrutural (a transcrição teria sido perdida na reinicialização). Liberar espaço em disco não vai ajudar. Opções de recuperação:\n1. Execute `hermes {profile_arg}doctor --fix`\n2. Pare o gateway e então recupere com:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (se indicar que é recuperável) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — a recuperação cria um instantâneo do arquivo danificado antes; NÃO execute `sqlite3 ... \".recover\"` contra o state.db ativo, pois um CLI sqlite3 vulnerável pode corrompê-lo ainda mais\n3. Restaure a partir de um backup em {backups_dir}/\nDepois envie sua mensagem novamente." fts_index: "o turno foi encerrado porque o índice de busca de sessões (FTS5) está corrompido e não pôde ser desanexado, então esta mensagem não foi salva. O armazenamento de mensagens em si não está danificado: não execute ferramentas de recuperação nem restaure um backup. Execute `hermes {profile_arg}doctor --fix` (ou reinicie o Hermes, que repara o índice ao abrir) e então envie sua mensagem novamente." disk: "o Hermes não conseguiu salvar esta conversa em disco, então parou em vez de perder suas mensagens. O disco provavelmente está cheio: libere espaço (ou corrija as permissões de {home}/state.db) e então envie sua mensagem novamente." default: "o Hermes não conseguiu salvar esta conversa, então parou em vez de perder suas mensagens. Causas possíveis: o disco está sem espaço ou outro processo do Hermes está segurando o banco de dados. Feche outras janelas do Hermes, execute `hermes {profile_arg}doctor` para verificar o armazenamento e então envie sua mensagem novamente." file_mutation: header: "⚠️ Verificador de mutação de arquivos: {count} edição(ões) de arquivo FALHOU(ARAM) neste turno, apesar de qualquer redação acima que sugira o contrário. Execute `git status` ou `read_file` para confirmar o que realmente foi aplicado." entry: " • `{path}` — [{tool}] {preview}" failed: "falhou" shared: and_more: " • … e {count} mais" the_model: "O modelo" tips: t001: "/bg executa uma tarefa em uma sessão separada enquanto a atual fica livre; /btw responde a uma pergunta paralela sobre esta conversa sem interrompê-la." t002: "/branch ramifica a sessão atual para que você explore outra direção sem perder o progresso." t003: "/compress comprime manualmente o contexto da conversa quando ela fica longa." t004: "/rollback lista os pontos de verificação do sistema de arquivos — restaure arquivos modificados pelo agente para qualquer estado anterior." t005: "/rollback diff 2 mostra o que mudou desde o ponto de verificação 2 sem restaurar nada." t006: "/rollback 2 src/file.py restaura um único arquivo a partir de um ponto de verificação específico." t007: "/title \"my project\" dá nome à sua sessão — retome-a depois com /resume ou hermes -c." t008: "/resume continua de onde você parou em uma sessão nomeada anteriormente." t009: "/queue coloca uma mensagem na fila para o próximo turno sem interromper o atual." t010: "/undo remove a última troca usuário/assistente da conversa." t011: "/retry reenvia sua última mensagem — útil quando a resposta do agente não saiu como esperado." t012: "/verbose alterna a exibição do progresso das ferramentas: off → new → all → verbose." t013: "/reasoning high aumenta a profundidade de raciocínio do modelo. /reasoning show exibe o raciocínio." t014: "/fast alterna o processamento prioritário para respostas de API mais rápidas (depende do fornecedor)." t015: "/yolo pula todas as solicitações de aprovação de comandos perigosos pelo resto da sessão." t016: "/model permite trocar de modelo no meio da sessão — experimente /model sonnet ou /model gpt-5." t017: "/model --global altera seu modelo padrão permanentemente." t018: "/personality pirate define uma personalidade divertida — 14 opções integradas, de kawaii a shakespeare." t019: "/skin muda o tema da CLI — experimente ares, mono, slate, poseidon ou charizard." t020: "/statusbar alterna uma barra persistente que mostra modelo, tokens, % de preenchimento do contexto, custo e duração." t021: "/tools disable browser remove temporariamente as ferramentas de navegador na sessão atual." t022: "/browser connect conecta as ferramentas de navegador ao seu navegador da família Chromium em execução via CDP." t023: "/plugins lista os plugins instalados e seu status." t024: "/cron gerencia tarefas agendadas — configure prompts recorrentes com entrega em qualquer plataforma." t025: "/reload-mcp recarrega a configuração dos servidores MCP a quente, sem reiniciar." t026: "/usage mostra o uso de tokens, o detalhamento de custos e a duração da sessão." t027: "/insights mostra análises de uso dos últimos 30 dias." t028: "/paste verifica se há uma imagem na área de transferência e a anexa à sua próxima mensagem." t029: "/profile mostra qual perfil está ativo e seu diretório inicial." t030: "/config mostra sua configuração atual de forma resumida." t031: "/stop encerra todos os processos em segundo plano iniciados pelo agente." t032: "@file:path/to/file.py injeta o conteúdo do arquivo diretamente na sua mensagem." t033: "@file:main.py:10-50 injeta apenas as linhas 10-50 de um arquivo." t034: "@folder:src/ injeta a listagem da árvore de um diretório." t035: "@diff injeta suas alterações git não preparadas (unstaged) na mensagem." t036: "@staged injeta suas alterações git preparadas (git diff --staged)." t037: "@git:5 injeta os últimos 5 commits com os patches completos." t038: "@url:https://example.com busca e injeta o conteúdo de uma página web." t039: "Digitar @ aciona o preenchimento de caminhos do sistema de arquivos — navegue até qualquer arquivo interativamente." t040: "Combine várias referências: \"Revise @file:main.py e @file:test.py quanto à consistência.\"" t041: "Alt+Enter insere uma quebra de linha para entrada em várias linhas. (O Windows Terminal intercepta Alt+Enter — use Ctrl+Enter no lugar.)" t042: "Ctrl+C interrompe o agente. Pressione duas vezes em 2 segundos para forçar a saída." t043: "Ctrl+Z suspende o Hermes para o segundo plano — execute fg no seu shell para retomar." t044: "Tab aceita o texto fantasma da sugestão automática ou completa comandos de barra." t045: "Digite uma nova mensagem enquanto o agente trabalha para interrompê-lo e redirecioná-lo." t046: "Alt+V cola uma imagem da área de transferência na conversa." t047: "Colar 5+ linhas salva automaticamente em um arquivo e insere uma referência compacta no lugar." t048: "hermes -c retoma sua sessão de CLI mais recente. hermes -c \"project name\" retoma pelo título." t049: "hermes -w cria um worktree git isolado — perfeito para fluxos de trabalho com agentes em paralelo." t050: "hermes -w -q \"Fix issue #42\" combina o isolamento em worktree com uma consulta única." t051: "hermes chat -t web,terminal ativa apenas conjuntos de ferramentas específicos para uma sessão focada." t052: "hermes chat -s github-pr-workflow pré-carrega uma skill na inicialização." t053: "hermes chat -q \"query\" executa uma única consulta não interativa e sai." t054: "hermes chat --max-turns 1000 substitui o limite padrão de 500 iterações por turno." t055: "hermes chat --checkpoints ativa instantâneos do sistema de arquivos antes de cada alteração destrutiva de arquivo." t056: "hermes --yolo ignora todas as solicitações de aprovação de comandos perigosos durante toda a sessão." t057: "hermes chat --source telegram marca a sessão para filtragem em hermes sessions list." t058: "hermes -p work chat executa sob um perfil específico sem alterar seu padrão." t059: "hermes doctor --fix diagnostica e repara automaticamente problemas de configuração e dependências." t060: "hermes dump gera um resumo compacto da sua instalação — ótimo para relatórios de bugs." t061: "hermes config set KEY VALUE direciona segredos automaticamente para o .env e todo o resto para o config.yaml." t062: "hermes config edit abre o config.yaml no seu editor padrão." t063: "hermes config check procura opções de configuração ausentes ou obsoletas." t064: "hermes sessions browse abre um seletor interativo de sessões com busca." t065: "hermes sessions stats mostra a contagem de sessões por plataforma e o tamanho do banco de dados." t066: "hermes sessions prune --older-than 30 limpa sessões antigas." t067: "hermes skills search react --source skills-sh pesquisa no diretório público skills.sh." t068: "hermes skills check verifica se as skills instaladas do hub têm atualizações upstream." t069: "hermes skills tap add myorg/skills-repo adiciona uma fonte personalizada de skills no GitHub." t070: "hermes skills snapshot export setup.json exporta sua configuração de skills para backup ou compartilhamento." t071: "hermes mcp add github --command npx adiciona servidores MCP pela linha de comando." t072: "hermes mcp serve executa o próprio Hermes como um servidor MCP para outros agentes." t073: "hermes auth add permite adicionar várias chaves de API para rotação do pool de credenciais." t074: "hermes completion bash >> ~/.bashrc ativa o preenchimento com Tab para todos os comandos e perfis." t075: "hermes logs -f acompanha o agent.log em tempo real. --level WARNING --since 1h filtra a saída." t076: "hermes backup cria um backup em zip de todo o seu diretório inicial do Hermes." t077: "hermes profile create coder cria um perfil isolado que se torna um comando próprio." t078: "hermes profile create work --clone copia sua configuração e chaves atuais para um novo perfil." t079: "hermes update sincroniza as novas skills incluídas com TODOS os perfis automaticamente." t080: "hermes gateway install configura o Hermes como um serviço do sistema (systemd/launchd)." t081: "hermes memory setup permite configurar um fornecedor de memória externo (Honcho, Mem0 etc.)." t082: "hermes webhook subscribe cria rotas de webhook orientadas a eventos com validação HMAC." t083: "Economize: hermes tools desativa ferramentas não usadas, hermes skills config enxuga as skills." t084: "/reasoning low ou /reasoning minimal reduz a profundidade de raciocínio abaixo do padrão (medium) — respostas mais rápidas e baratas." t085: "hermes models direciona visão, compressão e tarefas auxiliares para modelos mais baratos — corta o custo de tokens em segundo plano em 85%+ sem rebaixar seu modelo de chat principal." t086: "Defina display.bell_on_complete: true no config.yaml para ouvir um sinal sonoro quando tarefas longas terminarem." t087: "Defina display.streaming: true para ver os tokens aparecerem em tempo real enquanto o modelo gera." t088: "Defina display.show_reasoning: true para acompanhar a cadeia de raciocínio do modelo." t089: "Defina display.compact: true para reduzir o espaço em branco na saída e ver informações mais densas." t090: "Defina display.busy_input_mode: queue para colocar mensagens na fila em vez de interromper o agente, ou steer para injetá-las durante a execução via /steer." t091: "Defina display.resume_display: minimal para pular a recapitulação completa da conversa ao retomar uma sessão." t092: "Defina compression.threshold: 0.50 para controlar quando a compressão automática é acionada (padrão: 50% do contexto)." t093: "Defina agent.max_turns: 1000 para permitir que o agente execute mais etapas de chamada de ferramenta por turno." t094: "Defina file_read_max_chars: 200000 para aumentar o conteúdo máximo por chamada de read_file." t095: "Defina approvals.mode: smart para que um LLM aprove automaticamente comandos seguros e negue automaticamente os perigosos." t096: "Defina fallback_model no config.yaml para alternar automaticamente para um fornecedor de reserva." t097: "Defina privacy.redact_pii: true para fazer hash de IDs de usuário e números de telefone antes de enviá-los ao LLM." t098: "Defina browser.record_sessions: true para gravar automaticamente as sessões de navegador como vídeos WebM." t099: "Defina worktree: true no config.yaml para sempre criar um worktree git (o mesmo que hermes -w)." t100: "Defina security.website_blocklist.enabled: true para bloquear domínios específicos nas ferramentas web." t101: "Defina cron.wrap_response: false para entregar a saída bruta do agente sem o cabeçalho/rodapé do cron." t102: "HERMES_TIMEZONE substitui o fuso horário do servidor por qualquer string de fuso horário IANA." t103: "A substituição de variáveis de ambiente funciona no config.yaml: use a sintaxe ${VAR_NAME}." t104: "Comandos rápidos no config.yaml executam comandos de shell instantaneamente, sem gastar tokens." t105: "Personalidades personalizadas podem ser definidas no config.yaml em agent.personalities." t106: "provider_routing controla a ordenação, a lista de permissões e a lista de bloqueio de fornecedores do OpenRouter." t107: "execute_code executa scripts Python que chamam ferramentas do Hermes programaticamente — os resultados ficam fora do contexto." t108: "delegate_task inicia até 10 subagentes simultâneos por padrão (delegation.max_concurrent_children) com contextos isolados para trabalho em paralelo." t109: "web_extract funciona com URLs de PDF — passe qualquer link de PDF e ele converte para markdown." t110: "search_files usa ripgrep e é mais rápido que grep — use-o em vez do grep no terminal." t111: "patch usa 9 estratégias de correspondência aproximada, então pequenas diferenças de espaço em branco não quebram as edições." t112: "patch suporta o formato V4A para edições em massa de vários arquivos em uma única chamada." t113: "read_file sugere nomes de arquivo semelhantes quando um arquivo não é encontrado." t114: "read_file desduplica automaticamente — reler um arquivo inalterado retorna um stub leve." t115: "browser_vision captura uma tela e a analisa com IA — funciona para CAPTCHAs e conteúdo visual." t116: "browser_console pode avaliar expressões JavaScript no contexto da página." t117: "image_generate cria imagens com o FLUX 2 Pro e ampliação automática de 2x." t118: "text_to_speech converte texto em áudio — é reproduzido como mensagens de voz no Telegram." t119: "send_message pode alcançar qualquer plataforma de mensagens conectada de dentro de uma sessão." t120: "A ferramenta todo ajuda o agente a acompanhar tarefas complexas de várias etapas durante uma sessão." t121: "session_search faz busca em texto completo em TODAS as conversas anteriores." t122: "O agente salva automaticamente preferências, correções e fatos do ambiente na memória." t123: "/moa encaminha um prompt difícil pelo seu conjunto de modelos Mixture of Agents configurado." t124: "Os comandos de terminal suportam o modo em segundo plano com notify_on_complete para tarefas de longa duração." t125: "Os processos de terminal em segundo plano suportam watch_patterns para alertar sobre linhas de saída específicas." t126: "A ferramenta terminal suporta 6 backends: local, Docker, SSH, Modal, Daytona e Singularity." t127: "Cada perfil tem sua própria configuração, chaves de API, memória, sessões, skills e tarefas cron." t128: "Nomes de perfil se tornam comandos de shell — 'hermes profile create coder' cria o comando 'coder'." t129: "hermes profile export coder -o backup.tar.gz cria um arquivo de perfil portátil." t130: "Se dois perfis compartilharem por acidente o mesmo token de bot, o segundo gateway é bloqueado com um erro claro." t131: "As sessões geram títulos descritivos automaticamente após a primeira troca — não é preciso nomear manualmente." t132: "Os títulos de sessão suportam linhagem: \"my project\" → \"my project #2\" → \"my project #3\"." t133: "Ao sair, o Hermes imprime um comando de retomada com o ID da sessão e estatísticas." t134: "hermes sessions export backup.jsonl exporta todas as sessões para backup ou análise." t135: "hermes -r SESSION_ID retoma qualquer sessão anterior específica pelo seu ID." t136: "A memória é um instantâneo congelado — as alterações só aparecem no prompt do sistema no início da próxima sessão." t137: "As entradas de memória são verificadas automaticamente quanto a padrões de injeção de prompt e exfiltração." t138: "O agente tem dois repositórios de memória: notas pessoais (~2200 caracteres) e perfil do usuário (~1375 caracteres)." t139: "As correções que você dá ao agente (\"não, faça assim\") costumam ser salvas automaticamente na memória." t140: "Mais de 80 skills incluídas cobrindo github, creative, mlops, productivity, research e muito mais." t141: "Toda skill instalada vira automaticamente um comando de barra — digite / para ver todas." t142: "hermes skills install official/security/1password instala skills opcionais do repositório." t143: "As skills podem se restringir a sistemas operacionais específicos — algumas só carregam no macOS ou no Linux." t144: "skills.external_dirs no config.yaml permite carregar skills de diretórios personalizados." t145: "O agente pode criar suas próprias skills como memória procedural usando skill_manage." t146: "/plan escreve um plano de implementação em markdown em .hermes/plans/ sem executar nada." t147: "Tarefas cron podem anexar skills: hermes cron add --skill blogwatcher \"Check for new posts\"." t148: "Os destinos de entrega do cron incluem telegram, discord, slack, email, sms e mais de 12 outras plataformas." t149: "Se uma resposta de cron começar com [SILENT], a entrega é suprimida — útil para tarefas só de monitoramento." t150: "O cron suporta atrasos relativos (30m), intervalos (every 2h), expressões cron e timestamps ISO." t151: "Tarefas cron rodam em sessões de agente totalmente novas — os prompts precisam ser autossuficientes." t152: "O modo de voz funciona sem nenhuma chave de API se o faster-whisper estiver instalado (transcrição local gratuita)." t153: "Cinco fornecedores de TTS disponíveis: Edge TTS (gratuito), ElevenLabs, OpenAI, NeuTTS (local gratuito), MiniMax." t154: "/voice on ativa o modo de voz na CLI. Ctrl+B alterna a gravação push-to-talk." t155: "O TTS em streaming reproduz as frases conforme são geradas — sem esperar pela resposta completa." t156: "Mensagens de voz no Telegram, Discord, WhatsApp e Slack são transcritas automaticamente." t157: "O Hermes roda em 21 plataformas de mensagens: Telegram, Discord, Slack, WhatsApp, Signal, Matrix, IRC, Microsoft Teams, e-mail e mais." t158: "hermes gateway install o configura como serviço do sistema que inicia junto com a máquina." t159: "O DingTalk usa Stream Mode — sem webhooks nem URL pública." t160: "O BlueBubbles traz o iMessage ao Hermes por meio de um servidor macOS local." t161: "Rotas de webhook suportam validação HMAC, limitação de taxa e filtragem de eventos." t162: "O servidor de API expõe um endpoint compatível com OpenAI que funciona com Open WebUI e LibreChat." t163: "Modo de canal de voz do Discord: o bot entra no canal, transcreve a fala e responde falando." t164: "group_sessions_per_user: true dá a cada pessoa sua própria sessão em chats de grupo." t165: "/sethome marca um chat como canal principal para entregas de tarefas cron." t166: "O gateway suporta tempos limite baseados em inatividade — agentes ativos podem rodar indefinidamente." t167: "A aprovação de comandos perigosos tem 4 níveis: once, session, always (lista de permissões permanente), deny." t168: "O modo de aprovação inteligente usa um LLM para aprovar automaticamente comandos seguros e sinalizar os perigosos." t169: "A proteção contra SSRF bloqueia redes privadas, loopback, link-local e endereços de metadados de nuvem." t170: "A varredura pré-execução do Tirith detecta URLs falsificadas por homógrafos e padrões de pipe para interpretador." t171: "Subprocessos MCP recebem um ambiente filtrado — só variáveis seguras do sistema passam." t172: "Arquivos de contexto (.hermes.md, AGENTS.md) passam por varredura de segurança contra injeção de prompt antes de carregar." t173: "command_allowlist no config.yaml aprova permanentemente padrões específicos de comandos shell." t174: "O contexto é comprimido automaticamente ao atingir o limiar — memórias são gravadas e o histórico é resumido." t175: "A barra de status fica amarela, depois laranja e depois vermelha conforme o contexto se preenche." t176: "SOUL.md é o arquivo de identidade principal do agente — personalize-o para moldar o comportamento." t177: "O Hermes carrega o contexto do projeto de .hermes.md, AGENTS.md, CLAUDE.md ou .cursorrules (primeiro encontrado)." t178: "Arquivos AGENTS.md em subdiretórios são descobertos progressivamente conforme o agente navega pelas pastas." t179: "Arquivos de contexto são limitados a 20.000 caracteres com truncamento inteligente de início/fim." t180: "Cinco fornecedores de navegador: Chromium local, Browserbase, Browser Use, Camofox e Firecrawl." t181: "O Camofox é um navegador antidetecção — um fork do Firefox com falsificação de fingerprint em C++." t182: "browser_navigate retorna um instantâneo da página automaticamente — não é preciso chamar browser_snapshot depois." t183: "browser_vision com annotate=true sobrepõe rótulos numerados aos elementos interativos." t184: "hermes mcp abre um seletor interativo de MCPs aprovados pela Nous que você instala com uma tecla." t185: "hermes mcp catalog lista os servidores MCP aprovados pela Nous que acompanham o repositório." t186: "hermes mcp install instala uma entrada do catálogo, pede as credenciais e permite escolher quais ferramentas ativar." t187: "Servidores MCP são configurados no config.yaml — transportes stdio e HTTP suportados." t188: "Filtragem de ferramentas por servidor: tools.include permite e tools.exclude bloqueia ferramentas específicas." t189: "Servidores MCP geram conjuntos de ferramentas automaticamente em tempo de execução — hermes tools pode alterná-los por plataforma." t190: "Suporte a OAuth no MCP: auth: oauth ativa a autorização pelo navegador com PKCE." t191: "Checkpoints têm custo zero quando nenhum arquivo é modificado — ativados por padrão." t192: "Um instantâneo pré-reversão é salvo automaticamente para que você possa desfazer o desfazer." t193: "/rollback também desfaz o turno da conversa, para que o agente não se lembre das alterações revertidas." t194: "Checkpoints usam repositórios-sombra em ~/.hermes/checkpoints/ — o .git do seu projeto nunca é tocado." t195: "batch_runner.py processa centenas de prompts em paralelo para gerar dados de treinamento." t196: "hermes chat -Q ativa o modo silencioso para uso programático — oculta o banner e o spinner." t197: "O salvamento de trajetórias (--save-trajectories) captura rastros completos de uso de ferramentas para treinar modelos." t198: "Três tipos de plugin: geral (ferramentas/hooks), fornecedores de memória e motores de contexto." t199: "hermes plugins install owner/repo instala plugins diretamente do GitHub." t200: "Fornecedores de memória externos: Honcho, OpenViking e Mem0 incluídos; Hindsight e outros via hermes plugins install." t201: "Os hooks de plugin incluem pre/post_tool_call, pre/post_llm_call e transform_terminal_output para canonicalizar a saída." t202: "O cache de prompt (Anthropic) reduz custos ao reutilizar prefixos de prompt do sistema em cache." t203: "O agente gera títulos de sessão automaticamente em um tópico em segundo plano — sem impacto na latência." t204: "O roteamento inteligente de modelos pode enviar consultas simples automaticamente a um modelo mais barato." t205: "Comandos de barra suportam correspondência por prefixo: /h resolve para /help, /mod para /model." t206: "Arrastar um caminho de arquivo para o terminal anexa imagens automaticamente ou o envia como contexto." t207: ".worktreeinclude na raiz do repositório lista arquivos ignorados pelo git a copiar para os worktrees." t208: "hermes acp executa o Hermes como servidor ACP para integração com VS Code, Zed e JetBrains." t209: "Fornecedores personalizados: salve endpoints nomeados no config.yaml em custom_providers." t210: "HERMES_EPHEMERAL_SYSTEM_PROMPT injeta um prompt do sistema que nunca é persistido no histórico." t211: "credential_pool_strategies suporta rotação fill_first, round_robin, least_used e random." t212: "hermes auth add nous ou hermes auth add openai-codex configura fornecedores baseados em OAuth." t213: "O servidor de API suporta tanto a Chat Completions quanto a Responses API com estado no servidor." t214: "tool_preview_length: 0 na configuração mostra caminhos de arquivo completos no feed de atividade do spinner." t215: "hermes status --deep executa verificações de diagnóstico mais profundas em todos os componentes." t216: "Tarefas cron podem anexar um script Python (--script) cujo stdout é injetado no prompt como contexto." t217: "Scripts cron ficam em ~/.hermes/scripts/ e rodam antes do agente — perfeitos para pipelines de coleta de dados." t218: "prefill_messages_file no config.yaml injeta exemplos few-shot em toda chamada de API, sem nunca salvá-los no histórico." t219: "SOUL.md substitui completamente a identidade padrão do agente — reescreva-o para tornar o Hermes seu." t220: "SOUL.md é preenchido automaticamente com uma personalidade padrão na primeira execução. Edite-o para personalizar." t221: "/compress dedica 60-70% do orçamento do resumo ao seu tema e corta o resto agressivamente." t222: "A partir da segunda compressão, o compressor atualiza o resumo anterior em vez de começar do zero." t223: "Antes de reiniciar uma sessão do gateway, o Hermes grava automaticamente fatos importantes na memória em segundo plano." t224: "network.force_ipv4: true no config.yaml corrige travamentos em servidores com IPv6 quebrado — aplica monkey-patch em socket." t225: "A ferramenta terminal anota códigos de saída comuns: grep retornando 1 = 'No matches found (not an error)'." t226: "Comandos de terminal em primeiro plano que falham são repetidos automaticamente até 3 vezes com espera exponencial (2s, 4s, 8s)." t227: "Comandos sudo simples são reescritos automaticamente para receber SUDO_PASSWORD do .env via pipe — sem prompt interativo." t228: "Os auxiliares de execute_code exigem importações explícitas: from hermes_tools import json_parse, shell_quote, retry." t229: "As 7 ferramentas de sandbox de execute_code (web_search, terminal, read/write/search/patch) usam RPC — nunca entram no contexto." t230: "Ler a mesma região de arquivo 3+ vezes dispara um aviso. Com 4+, é bloqueado de forma rígida para evitar loops." t231: "write_file e patch detectam se um arquivo foi modificado externamente desde a última leitura e avisam que está desatualizado." t232: "O formato de patch V4A suporta as diretivas Add File, Delete File e Move File — não apenas Update." t233: "Servidores MCP podem solicitar completions do LLM via sampling — o agente vira uma ferramenta para o servidor." t234: "Servidores MCP enviam notifications/tools/list_changed para acionar o novo registro automático de ferramentas sem reiniciar." t235: "delegate_task com acp_command: 'claude' cria o Claude Code como agente filho a partir de qualquer plataforma." t236: "A delegação tem um tópico de heartbeat — a atividade do filho é propagada ao pai, evitando tempos limite do gateway." t237: "Quando um fornecedor retorna HTTP 402 (pagamento necessário), o cliente auxiliar recorre automaticamente ao próximo." t238: "agent.tool_use_enforcement redireciona modelos que descrevem ações em vez de chamar ferramentas — automático para GPT/Codex." t239: "agent.restart_after_turn_timeout deixa os turnos em andamento terminarem antes de /restart entrar em stop(); restart_drain_timeout é apenas o orçamento de interrupção forçada depois que stop() começa." t240: "agent.api_max_retries (padrão 3) controla quantas vezes o agente tenta novamente uma chamada de API que falhou antes de exibir o erro — reduza para um fallback rápido." t241: "O gateway mantém instâncias de AIAgent em cache por sessão — destruir esse cache quebra o cache de prompt da Anthropic." t242: "Qualquer site pode expor skills via /.well-known/skills/index.json — o hub de skills as descobre automaticamente." t243: "O log de auditoria de skills em ~/.hermes/skills/.hub/audit.log registra toda operação de instalação e remoção." t244: "Worktrees git obsoletos são limpos automaticamente na inicialização: árvores limpas e totalmente mescladas são removidas; trabalho sujo ou não enviado é sempre preservado." t245: "Perfis delimitam o estado do Hermes via HERMES_HOME; subprocessos de ferramentas do host mantêm seu HOME real, a menos que terminal.home_mode seja profile." t246: "A variável de ambiente HERMES_HOME_MODE (octal, ex.: 0701) define permissões de diretório personalizadas para travessia pelo servidor web." t247: "Modo contêiner: coloque .container-mode em HERMES_HOME e a CLI do host executa automaticamente dentro do contêiner." t248: "Ctrl+C tem 5 níveis de prioridade: cancelar gravação → cancelar prompts → cancelar seletor → interromper agente → sair." t249: "Toda interrupção durante a execução de um agente é registrada em ~/.hermes/interrupt_debug.log com carimbo de tempo." t250: "BROWSER_CDP_URL conecta as ferramentas de navegador a qualquer navegador da família Chromium em execução — aceita WebSocket, HTTP ou host:port." t251: "BROWSERBASE_ADVANCED_STEALTH=true ativa antidetecção avançada com Chromium personalizado (Scale Plan)." t252: "A CLI muda automaticamente para o modo compacto em terminais com menos de 80 colunas." t253: "Comandos rápidos suportam dois tipos: exec (executa um comando shell diretamente) e alias (redireciona para outro comando)." t254: "Modelo de delegação por tarefa: delegation.model e delegation.provider na configuração roteiam subagentes para modelos mais baratos." t255: "delegation.reasoning_effort controla de forma independente a profundidade de raciocínio dos subagentes." t256: "display.platforms no config.yaml permite substituições de exibição por plataforma: {telegram: {tool_progress: all}}." t257: "human_delay.mode na configuração simula a velocidade de digitação humana — intervalo min_ms/max_ms configurável." t258: "Migrações de versão da configuração rodam automaticamente ao carregar — novas chaves aparecem sem intervenção manual." t259: "Modelos GPT e Codex recebem orientação especial no prompt do sistema sobre disciplina e uso obrigatório de ferramentas." t260: "Modelos Gemini recebem diretrizes específicas para caminhos absolutos, chamadas de ferramenta paralelas e comandos não interativos." t261: "context.engine no config.yaml pode apontar para o nome de um plugin para estratégias alternativas de gestão de contexto." t262: "Instantâneos de página do navegador com mais de 15.000 caracteres são truncados ou resumidos automaticamente; o instantâneo completo é salvo em cache/web para paginação com read_file." t263: "O compressor faz uma pré-passagem barata: saídas de ferramenta com mais de 200 caracteres são substituídas por placeholders antes de o LLM rodar." t264: "Quando a compressão falha, novas tentativas são pausadas por 10 minutos para não sobrecarregar a API." t265: "Comandos perigosos longos (>70 caracteres) ganham a opção 'view' no prompt de aprovação para ver o texto completo antes." t266: "A visualização do nível de áudio mostra barras ▁▂▃▄▅▆▇ durante a gravação de voz com base no RMS do microfone." t267: "Nomes de perfil não podem colidir com binários existentes no PATH — 'hermes profile create ls' seria rejeitado." t268: "hermes profile create backup --clone-all copia tudo (configuração, chaves, SOUL.md, memórias, skills, sessões)." t269: "A tecla de gravação de voz é configurável via voice.record_key no config.yaml — não apenas Ctrl+B." t270: "Arquivos .cursorrules e .cursor/rules/*.mdc são detectados e carregados automaticamente como contexto do projeto." t271: "Arquivos de contexto são checados contra 10+ padrões de injeção de prompt — Unicode invisível, 'ignore instructions', tentativas de exfiltração." t272: "GPT-5 e Codex usam o papel 'developer' em vez de 'system' no formato de mensagens." t273: "Substituições auxiliares por tarefa: auxiliary.vision.provider, auxiliary.compression.model etc. no config.yaml." t274: "O cliente auxiliar trata 'main' como alias de fornecedor — resolve para o seu fornecedor + modelo primário real." t275: "hermes claw migrate --dry-run pré-visualiza a migração do OpenClaw sem gravar nada." t276: "Caminhos de arquivo colados com aspas ou espaços escapados são tratados automaticamente — sem limpeza manual." t277: "Comandos de barra nunca acionam o recolhimento de colagens grandes — /command com argumentos extensos funciona corretamente." t278: "No modo de interrupção, comandos de barra digitados durante a execução do agente ignoram a lógica de interrupção e rodam imediatamente." t279: "HERMES_DEV=1 ignora a detecção de modo contêiner para desenvolvimento local." t280: "Cada servidor MCP recebe seu próprio conjunto de ferramentas (mcp-servername), que pode ser alternado de forma independente via hermes tools." t281: "Placeholders ${ENV_VAR} de MCP na configuração são resolvidos ao iniciar o servidor — incluindo variáveis de ~/.hermes/.env." t282: "Skills de repositórios confiáveis (NousResearch) recebem o nível de segurança 'trusted'; skills da comunidade passam por varredura extra." t283: "A quarentena de skills em ~/.hermes/skills/.hub/quarantine/ guarda skills aguardando revisão de segurança." t284: "/steer injeta uma nota após a próxima chamada de ferramenta — ajuste a direção no meio da tarefa sem interromper." t285: "/goal define um objetivo permanente em loop Ralph — o Hermes continua turno após turno até um juiz declarar concluído." t286: "/snapshot create [label] salva um instantâneo completo da configuração do Hermes; /snapshot restore reverte depois." t287: "/copy [N] copia a última resposta do assistente para a área de transferência, ou a N-ésima a partir do fim com um número." t288: "/redraw força um redesenho completo da interface, corrigindo desvios do terminal após redimensionar o tmux ou artefatos de seleção com o mouse." t289: "/agents (alias /tasks) mostra os agentes ativos e as tarefas em segundo plano em execução na sessão atual." t290: "/footer alterna o rodapé do gateway nas respostas finais, mostrando modelo, % de contexto e cwd." t291: "/busy queue|steer|interrupt controla o que Enter faz enquanto o Hermes está trabalhando." t292: "/topic em DMs do Telegram ativa o modo de tópicos multissessão gerenciado pelo usuário — /topic restaura sessões passadas inline." t293: "/approve session|always executa um comando perigoso pendente com o escopo de confiança escolhido; /deny o rejeita." t294: "/restart reinicia o gateway de forma controlada após drenar as execuções ativas e depois avisa quem solicitou quando voltar." t295: "/kanban boards switch troca o quadro Kanban multiprojeto ativo de dentro do chat." t296: "/reload recarrega ~/.hermes/.env na sessão em execução — aplique novas chaves de API sem reiniciar." t297: "cronjob com no_agent=True executa um script no horário agendado e envia seu stdout diretamente — zero tokens, zero LLM." t298: "Um stdout vazio no script cron significa tique silencioso — nada é entregue, perfeito para watchdogs de limiar." t299: "HERMES_CRON_MAX_PARALLEL (padrão 4) limita quantas tarefas cron rodam por tique para que picos não saturem suas chaves." t300: "Hooks do gateway ficam em ~/.hermes/hooks// com HOOK.yaml + handler.py — o handler deve se chamar `handle`." t301: "Os eventos de hook incluem gateway:startup, session:start, agent:step e assinaturas com curinga command:*." t302: "Coloque uma lista de verificação em ~/.hermes/BOOT.md e um hook gateway:startup a executa como agente de uma única vez a cada inicialização." t303: "hermes curator run --dry-run mostra o que o curador arquivaria ou consolidaria sem alterar nada." t304: "hermes curator pin protege uma skill tanto do arquivamento automático quanto da ferramenta skill_manage do agente." t305: "hermes curator rollback restaura skills a partir de um instantâneo anterior à execução — os backups ficam em skills/.curator_backups/." t306: "hermes auth reset [target] limpa os tempos de espera e as marcações de esgotamento de um pool inteiro de credenciais, ou de uma única credencial por índice, id ou rótulo." t307: "credential_pool_strategies.: round_robin alterna as chaves de forma uniforme em vez do padrão fill_first." t308: "use_gateway: true por ferramenta roteia web, image, tts ou browser pela sua assinatura Nous — sem chaves extras." t309: "provider_routing.data_collection: deny exclui fornecedores que armazenam dados no OpenRouter." t310: "provider_routing.require_parameters: true roteia apenas para fornecedores que suportam todos os parâmetros da sua solicitação." t311: "HERMES_TUI_RESUME=1 reanexa automaticamente à sessão mais recente da TUI ao iniciar — útil depois de quedas de SSH." t312: "HERMES_TUI_THEME=light|dark| força o tema da TUI em terminais que não definem COLORFGBG." t313: "Ctrl+G ou Ctrl+X Ctrl+E na TUI abre o buffer de entrada no $EDITOR para prompts longos com várias linhas." t314: "A TUI renderiza LaTeX em linha — $E=mc^2$ vira notação matemática Unicode em vez de TeX bruto." t315: "hermes dashboard inicia uma interface web local em 127.0.0.1:9119 — nenhum dado sai do localhost." t316: "hermes dashboard incorpora a TUI completa do Hermes no seu navegador via xterm.js e um PTY por WebSocket." t317: "Coloque um YAML em ~/.hermes/dashboard-themes/ com duas cores de paleta para mudar o visual de todo o painel." t318: "Os plugins do painel são drop-in: manifest.json + bundle JS em ~/.hermes/dashboard-plugins/ — sem precisar de build com npm." t319: "layoutVariant: cockpit em um tema do painel adiciona uma barra lateral esquerda de 260px que os plugins podem preencher pelo slot sidebar." t320: "display.tool_progress_command: true expõe /verbose nas plataformas de mensagens; por padrão, ele é exclusivo da CLI." t321: "HERMES_BACKGROUND_NOTIFICATIONS=result só avisa quando tarefas em segundo plano terminam (em vez de concise/all/error/off)." t322: "HERMES_WRITE_SAFE_ROOT restringe write_file/patch a prefixos de diretório; vários caminhos via os.pathsep (: ou ;)." t323: "HERMES_IGNORE_RULES pula a injeção automática de AGENTS.md, SOUL.md, .cursorrules, memória e skills pré-carregadas." t324: "HERMES_ACCEPT_HOOKS aprova automaticamente hooks de shell inéditos declarados em config.yaml sem pedir confirmação no TTY." t325: "auxiliary.goal_judge.model roteia o juiz do /goal para um modelo barato e rápido, mantendo o custo do loop perto de zero." t326: "Os checkpoints ignoram diretórios com mais de 50.000 arquivos para evitar operações git lentas em monorepos enormes." t327: "tts.provider: piper executa TTS local em 44 idiomas na CPU — as vozes são baixadas automaticamente para ~/.hermes/cache/piper-voices/." t328: "tts.providers..type: command conecta qualquer motor de TTS de linha de comando usando os placeholders {input_path} e {output_path}." t329: "API_SERVER_ENABLED=true executa um endpoint compatível com OpenAI junto ao gateway, para Open WebUI e LibreChat." t330: "GATEWAY_PROXY_URL cria uma configuração dividida: E/S das plataformas localmente, trabalho do agente delegado a um servidor de API remoto." t331: "MATRIX_DEVICE_ID fixa um ID de dispositivo estável para E2EE — sem ele, as chaves rotacionam a cada início e a descriptografia do histórico quebra." t332: "TELEGRAM_WEBHOOK_SECRET é obrigatório sempre que TELEGRAM_WEBHOOK_URL estiver definido — gere com openssl rand -hex 32." t333: "batch_runner.py --resume identifica prompts concluídos pelo conteúdo do texto, para que reordenações do dataset não refaçam trabalho já terminado." t334: "/new inicia uma sessão nova no lugar (alias /reset) — novo ID de sessão, histórico limpo, e a CLI continua aberta." t335: "/clear limpa a tela do terminal E inicia uma nova sessão — um único atalho para um reset visual." t336: "/history imprime a conversa atual em linha sem sair da CLI — útil para uma releitura rápida." t337: "/save grava a conversa atual em disco sem encerrar a sessão." t338: "/status mostra as informações da sessão de uma olhada: ID, título, modelo, uso de tokens e tempo decorrido." t339: "/image anexa um arquivo de imagem local ao seu próximo prompt sem colar nem arrastar e soltar." t340: "/platforms mostra o status de conexão do gateway e das plataformas de mensagens direto de dentro do chat." t341: "/commands pagina a lista completa de comandos slash + skills instaladas — útil em plataformas sem autocompletar por Tab." t342: "/toolsets lista todos os conjuntos de ferramentas disponíveis para você saber o que -t/--toolsets aceita." t343: "/voice tts alterna o modo somente TTS — o agente responde em voz alta, mas você continua digitando seus prompts." t344: "/reload-skills verifica novamente ~/.hermes/skills/ para que skills adicionadas apareçam sem reiniciar a sessão." t345: "/indicator kaomoji|emoji|unicode|ascii escolhe o estilo do indicador de ocupado da TUI mostrado durante as execuções do agente." t346: "/debug envia um pacote de suporte (informações do sistema + logs) e retorna links compartilháveis — funciona no chat também." t347: "hermes -z \"\" é o modo one-shot mais puro: só a resposta final no stdout, nada mais — ideal para pipes em scripts." t348: "hermes chat --pass-session-id injeta o ID da sessão no prompt do sistema para que o agente possa referenciá-lo." t349: "hermes chat --image path/to/pic.png anexa uma imagem local a uma única consulta -q sem uma etapa separada de envio." t350: "hermes chat --ignore-user-config ignora a configuração ativa do usuário — relatórios de bug reproduzíveis e execuções em CI." t351: "hermes chat --source tool marca chats programáticos para que eles não poluam hermes sessions list." t352: "hermes dump --show-keys inclui impressões digitais ocultadas das chaves de API para uma depuração de suporte mais profunda." t353: "hermes sessions rename \"new title\" renomeia qualquer sessão passada; hermes sessions delete remove uma." t354: "hermes import restaura um zip de backup completo do Hermes; exportações de sessão em JSON/JSONL são importadas pela página Sessões do painel." t355: "hermes fallback gerencia a cadeia fallback_model de forma interativa — sem editar config.yaml à mão." t356: "hermes pairing rotaciona o token de pareamento por DM — a primeira pessoa a enviar mensagem após a rotação obtém acesso ao bot." t357: "hermes setup guia usuários iniciantes pela configuração de fornecedor, chaves e plataformas em um único fluxo interativo." t358: "hermes status --deep executa a verificação completa de saúde em todos os componentes; hermes status simples é a visão rápida." t359: "HERMES_AGENT_TIMEOUT=0 desativa o encerramento por inatividade do gateway para um agente em execução — use em pesquisas longas." t360: "HERMES_ENABLE_PROJECT_PLUGINS=1 carrega automaticamente plugins locais do repositório em ./.hermes/plugins/ — protegido por confiança por design." t361: "HERMES_DISABLE_FILE_STATE_GUARD=1 desliga a proteção 'arquivo alterado desde a leitura' em patch e write_file." t362: "HERMES_ALLOW_PRIVATE_URLS=true permite que as ferramentas web acessem localhost e redes privadas — desativado por padrão no modo gateway." t363: "HERMES_OPTIONAL_SKILLS=name1,name2 instala automaticamente skills extras do catálogo opcional na primeira execução de cada perfil." t364: "HERMES_BUNDLED_SKILLS aponta para uma árvore personalizada de skills embutidas — usado pelos pacotes do Homebrew e do Nix." t365: "HERMES_DUMP_REQUEST_STDOUT=1 despeja o payload de cada solicitação à API no stdout em vez de em arquivos de log." t366: "HERMES_OAUTH_TRACE=1 registra, com dados ocultados, as trocas e renovações de token OAuth para depurar a autenticação de fornecedores." t367: "HERMES_STREAM_RETRIES (padrão 3) controla as tentativas de reconexão no meio do stream em erros de rede transitórios." t368: "HERMES_GATEWAY_BUSY_ACK_ENABLED=false silencia as mensagens de confirmação ⚡/⏳/⏩ quando um usuário escreve para um agente ocupado." t369: "HERMES_AGENT_NOTIFY_INTERVAL (padrão 180s) define com que frequência o gateway envia atualizações de progresso em turnos longos." t370: "HERMES_RESTART_DRAIN_TIMEOUT (padrão 900s) limita quanto tempo /restart espera pelas execuções em andamento antes de forçar." t371: "HERMES_CHECKPOINT_TIMEOUT (padrão 30s) limita a criação de checkpoints do sistema de arquivos — aumente em monorepos enormes." t372: "image_gen.model em config.yaml escolhe o modelo FAL: flux-2/klein, gpt-image-2, nano-banana-pro e outros." t373: "image_gen.provider roteia a geração de imagens por um plugin (OpenAI Images, Codex, FAL) em vez do padrão." t374: "AUXILIARY_VISION_BASE_URL + AUXILIARY_VISION_API_KEY apontam a análise de visão para qualquer endpoint compatível com OpenAI." t375: "security.tirith_fail_open: false faz o Hermes bloquear comandos quando o próprio scanner tirith falha." t376: "A variável de ambiente TIRITH_FAIL_OPEN sobrepõe a configuração tirith_fail_open — um alternador rápido sem editar config.yaml." t377: "Chats com --source tool ficam fora de hermes sessions list por padrão — defina --source explicitamente para vê-los." t378: "Os IDs de sessão têm prefixo de data e hora (20250305_091523_abcd), então a ordenação funciona naturalmente em ls e jq." t379: "API_SERVER_MODEL_NAME personaliza o nome do modelo em /v1/models — essencial para configurações do Open WebUI com vários perfis." t380: "Os plugins do painel são servidos em /dashboard-plugins// — coloque os arquivos em ~/.hermes/dashboard-plugins/." placeholder: p01: "Pergunte qualquer coisa ou digite / para ver comandos…" p02: "Resuma o que há nesta pasta" p03: "Redija uma resposta ao último e-mail da minha caixa de entrada" p04: "Planeje uma funcionalidade e depois construa passo a passo" p05: "Encontre e corrija um teste que está falhando" p06: "Pesquise este tema e escreva um resumo para mim" p07: "O que mudou neste repositório recentemente?" p08: "Transforme estas anotações em uma lista de tarefas" p09: "Explique este erro e como corrigi-lo" p10: "Defina um lembrete ou agende uma tarefa recorrente" p11: "Digite / para navegar pelos comandos ou Ctrl+P para a paleta"