{ "common": { "error": "Erro: {message}", "serverOffline": "O servidor OmniRoute está offline. Inicie com: omniroute serve", "authRequired": "Autenticação necessária. Defina OMNIROUTE_API_KEY ou execute: omniroute setup", "rateLimited": "Limite de pedidos atingido. Tente novamente em {seconds}s.", "timeout": "O pedido expirou após {ms}ms.", "success": "Concluído.", "yes": "sim", "no": "não", "confirm": "Tem a certeza? (sim/não)", "dryRun": "[simulação] faria: {action}", "cancelled": "Cancelado.", "jsonOpt": "Saída em JSON", "yesOpt": "Ignorar confirmação" }, "setup": { "title": "Configuração do OmniRoute", "passwordPrompt": "Palavra-passe de administrador", "providerPrompt": "Fornecedor predefinido (deixe em branco para ignorar)", "done": "Configuração concluída", "passwordSet": "Palavra-passe de administrador configurada", "providerSet": "Fornecedor configurado: {name}", "testingProvider": "A testar a ligação ao fornecedor: {name}", "testPassed": "Teste do fornecedor bem-sucedido", "testFailed": "O teste do fornecedor falhou: {error}", "loginEnabled": "Início de sessão: ativado (palavra-passe atualizada)", "loginDisabled": "Início de sessão: desativado", "providerInfo": "Fornecedor: {info}", "opencode": "Instalar e configurar o @omniroute/opencode-plugin incluído para o OpenCode" }, "doctor": { "title": "Diagnóstico do OmniRoute", "dbOk": "Base de dados: OK ({path})", "dbMissing": "Base de dados: não inicializada — execute `omniroute setup`", "portOk": "Porta {port}: disponível", "portConflict": "Porta {port}: em utilização por outro processo", "encryptionOk": "Chave de encriptação: configurada", "encryptionMissing": "Chave de encriptação em falta — execute `omniroute setup`", "allGood": "Todas as verificações foram concluídas com êxito.", "warnings": "{count} aviso(s) — consulte acima." }, "providers": { "title": "Fornecedores", "noProviders": "Não existem fornecedores configurados. Execute: omniroute setup", "testing": "A testar {name}...", "available": "{count} fornecedor(es) disponível(eis)", "connected": "Ligado", "disconnected": "Desligado", "validationFailed": "A validação falhou: {error}", "metrics": { "description": "Mostrar métricas de desempenho dos fornecedores (latência, taxa de sucesso, custo)", "provider": "Filtrar por ID do fornecedor", "connection_id": "Filtrar por ID da ligação", "period": "Período: 1h|6h|24h|7d|30d (predefinição: 24h)", "metric": "Focar num campo de métrica específico", "sort": "Ordenar por campo (ordem decrescente)", "limit": "Máximo de linhas (predefinição: 50)", "watch": "Atualizar a cada 5 s (modo em direto)", "compare": "IDs de fornecedores separados por vírgulas para comparação lado a lado" }, "metric_single": { "description": "Obter um único valor de métrica para uma ligação específica" }, "rotate": { "description": "Rodar a chave da API upstream de uma ligação de fornecedor", "newKeyOpt": "Novo valor da chave de API (evite: prefira --from-env)", "fromEnvOpt": "Ler a nova chave a partir da variável de ambiente VAR", "oauthOpt": "Iniciar, em alternativa, o fluxo de reautenticação OAuth", "skipTestOpt": "Ignorar o teste de conectividade após a rotação", "dryRunOpt": "Mostrar o que seria alterado sem guardar", "confirmPrompt": "Substituir a chave de API da ligação \"{name}\" ({id})? [y/N]", "dryRunResult": "[dry-run] A chave da ligação \"{name}\" ({id}) seria rodada. Não foram efetuadas alterações.", "oauthHint": "Ligação OAuth — execute: omniroute oauth {provider}", "envVarEmpty": "A variável de ambiente {var} não está definida ou está vazia.", "success": "Chave rodada para \"{name}\". Execute `providers test {id}` para verificar.", "testPassed": "O teste após a rotação foi concluído com êxito.", "testFailed": "O teste após a rotação falhou: {error}" }, "status": { "description": "Mostrar o estado das chaves de todas as ligações a fornecedores (idade, validade, período de espera)", "providerOpt": "Filtrar por nome do fornecedor", "header": "ID Fornecedor Nome Validade Estado Estado do teste Período de espera até", "noData": "Não existem dados disponíveis sobre ligações a fornecedores.", "requiresServer": "providers status requer que o servidor OmniRoute esteja em execução." } }, "keys": { "title": "Chaves de API", "addDescription": "Adicionar ou atualizar uma chave de API de um fornecedor", "listDescription": "Listar todas as chaves de API configuradas", "removeDescription": "Remover uma chave de API de um fornecedor", "regenerateDescription": "Gerar novamente uma chave de API do OmniRoute", "revokeDescription": "Revogar uma chave de API do OmniRoute", "revealDescription": "Revelar o valor não ocultado da chave de API", "usageDescription": "Mostrar a utilização recente de uma chave de API", "usageLimitOpt": "Número de pedidos recentes", "rotateDescription": "Gerar uma nova chave e invalidar a antiga", "graceOpt": "Período de tolerância (ms) antes de a chave antiga ser invalidada", "stdinOpt": "Ler a chave de API a partir de stdin em vez do argumento", "added": "Chave adicionada para {provider}.", "removed": "Chave removida.", "listed": "{count} chave(s).", "noKeys": "Não existem chaves configuradas.", "noUsage": "Não foram encontrados dados de utilização.", "confirmRemove": "Remover a chave {id}?", "confirmRegenerate": "Gerar novamente a chave {id}?", "confirmRevoke": "Revogar a chave {id}?", "confirmRotate": "Rodar a chave {id}? (a chave antiga será invalidada após o período de tolerância)", "regenerated": "Gerada novamente. Nova chave: {key}", "revoked": "Chave {id} revogada.", "rotated": "Chave {id} rodada. Novo ID da chave: {newId}", "revealWarning": "⚠ Isto apresentará a chave completa sem ocultação. Certifique-se de que o seu ecrã está privado.", "providerRequired": "O fornecedor é obrigatório.", "keyRequired": "A chave de API é obrigatória.", "stdinEmpty": "Não foi fornecida nenhuma chave de API através de stdin.", "unknownProvider": "Fornecedor desconhecido: {provider}", "policy": { "title": "Política da chave", "showDescription": "Mostrar a política de limites/custos de uma chave", "setDescription": "Definir a política de limites/custos de uma chave", "rateLimitOpt": "Máximo de pedidos por minuto", "maxCostOpt": "Custo máximo por dia (USD)", "allowedModelsOpt": "Lista de modelos permitidos, separados por vírgulas", "nothingToSet": "Não foram fornecidos campos da política. Utilize --rate-limit, --max-cost ou --allowed-models.", "updated": "Política atualizada." }, "expiration": { "title": "Expiração da chave", "listDescription": "Listar chaves que expiram em breve", "daysOpt": "Mostrar chaves que expiram dentro de N dias", "none": "Nenhuma chave expira dentro de {days} dias.", "listTitle": "Chaves que expiram dentro de {days} dias:" } }, "authExport": { "description": "Exportar credenciais DESENCRIPTADAS do fornecedor (apenas local, saída em texto simples)", "idOpt": "Exportar apenas a ligação que corresponde a este ID/nome/fornecedor", "formatOpt": "Formato de saída: json ou env", "outOpt": "Escrever a saída num ficheiro em vez de stdout (escrito com permissões 0600)", "forceOpt": "Confirmar que compreende que isto apresenta/escreve segredos em texto simples", "warning": "⚠ Isto apresenta/escreve chaves de API e tokens OAuth DESENCRIPTADOS em texto simples. Certifique-se de que o seu ecrã, o histórico da shell e qualquer ficheiro de saída permanecem privados.", "confirmHeading": "⚠ AVISO: isto exporta credenciais DESENCRIPTADAS do fornecedor em texto simples", "confirmBody": "Este comando desencripta e apresenta/escreve apiKey, accessToken, refreshToken e\nidToken para as ligações selecionadas. Trate a saída como um segredo.", "confirmFooter": "Para confirmar, execute:\n omniroute auth export --force", "missingKey": "STORAGE_ENCRYPTION_KEY é necessária para exportar credenciais.", "notFound": "Ligação não encontrada: {id}", "invalidFormat": "Formato inválido: {format}. Utilize json ou env." }, "stream": { "description": "Transmitir uma resposta de chat com modos de inspeção SSE", "file": "Ler o pedido a partir de um ficheiro", "stdin": "Ler o pedido a partir de stdin", "model": "ID do modelo (predefinição: auto)", "system": "Pedido de sistema", "combo": "Forçar uma combinação específica pelo nome", "max_tokens": "Número máximo de tokens na resposta", "responses_api": "Utilizar /v1/responses em vez de /v1/chat/completions", "raw": "Apresentar as linhas SSE em bruto à medida que são recebidas", "debug": "Imprimir informações de tempo por bloco em stderr", "save": "Guardar todos os eventos SSE num ficheiro .jsonl", "error": { "empty_prompt": "Erro: o prompt é obrigatório (argumento posicional, --file ou --stdin)" } }, "usage": { "description": "Análises de utilização, orçamentos, quotas e registos", "analytics": { "description": "Mostrar análises de utilização agregadas", "period": "Intervalo de tempo: 1d|7d|30d|90d|ytd|all (predefinição: 30d)", "provider": "Filtrar por ID do fornecedor" }, "budget": { "description": "Gerir orçamentos de custos", "set": { "scope": "Âmbito do orçamento (predefinição: global)", "period": "Período do orçamento: daily|weekly|monthly (predefinição: monthly)" } }, "quota": { "description": "Mostrar a utilização da quota do fornecedor", "provider": "Filtrar por ID do fornecedor", "check": "Mostrar se existe quota disponível para um novo pedido" }, "logs": { "description": "Mostrar registos de chamadas de pedidos", "limit": "Número de entradas de registo a devolver (predefinição: 100)", "search": "Consulta de pesquisa para filtrar os registos", "since": "Devolver registos desde esta data e hora", "follow": "Acompanhar continuamente novas entradas de registo", "api_key": "Filtrar registos por chave de API" }, "utilization": { "description": "Mostrar métricas de utilização da chave de API", "api_key": "Filtrar por chave de API" }, "history": { "description": "Mostrar histórico de pedidos", "limit": "Número de entradas do histórico (predefinição: 100)" }, "proxy_logs": { "description": "Mostrar registos de pedidos ao nível do proxy", "limit": "Número de entradas de registo do proxy (predefinição: 100)" } }, "cost": { "description": "Mostrar relatório de custos com discriminação por fornecedor, modelo, combinação ou chave de API", "period": "Intervalo de tempo: 1d|7d|30d|90d|ytd|all (predefinição: 30d)", "since": "Data de início (formato ISO, por exemplo, 2026-01-01) — substitui --period", "until": "Data de fim (formato ISO)", "group_by": "Agrupar resultados por: provider|model|api-key|combo|day (predefinição: provider)", "api_key_filter": "Filtrar por uma chave de API específica", "limit": "Número máximo de linhas a mostrar (predefinição: 100)" }, "simulate": { "description": "Simulação de encaminhamento sem execução — mostrar quais os fornecedores que seriam selecionados sem contactar o serviço a montante", "file": "Carregar o corpo completo do pedido a partir de um ficheiro JSON", "model": "ID do modelo (predefinição: auto)", "combo": "Forçar uma combinação específica pelo nome", "reasoning": "Nível de esforço de raciocínio (low|medium|high)", "thinking": "Orçamento de tokens para raciocínio alargado", "explain": "Imprimir a árvore de alternativas e o intervalo de custos em stderr", "noCombo": "Não foi encontrada nenhuma combinação correspondente. Configure uma com: omniroute combo create" }, "chat": { "description": "Enviar um pedido de chat único para o OmniRoute", "file": "Ler o pedido a partir de um ficheiro", "stdin": "Ler o pedido a partir da entrada padrão", "system": "Pedido do sistema", "model": "ID do modelo (predefinição: auto)", "max_tokens": "Número máximo de tokens na resposta", "temperature": "Temperatura de amostragem (0–2)", "top_p": "Amostragem nuclear top-p", "reasoning_effort": "Nível de esforço de raciocínio (low|medium|high)", "thinking_budget": "Orçamento de tokens para raciocínio alargado", "combo": "Forçar uma combinação específica pelo nome", "responses_api": "Utilizar /v1/responses em vez de /v1/chat/completions", "stream": "Transmitir a resposta de forma incremental", "no_history": "Não guardar em ~/.omniroute/cli-history.jsonl", "error": { "empty_prompt": "Erro: o pedido é obrigatório (argumento posicional, --file ou --stdin)" } }, "serve": { "description": "Iniciar o servidor OmniRoute (ação predefinida)", "starting": "A iniciar o servidor OmniRoute na porta {port}...", "ready": "Disponível em http://localhost:{port}", "stopping": "A parar o servidor (PID {pid})...", "stopped": "Servidor parado.", "notRunning": "O servidor não está em execução.", "port": "Porta de escuta (predefinição: 20128)", "no_open": "Não abrir o navegador automaticamente", "daemon": "Executar o servidor como daemon em segundo plano", "log": "Mostrar os registos do servidor em linha", "no_recovery": "Desativar o reinício automático em caso de falha (modo de depuração)", "max_restarts": "Número máximo de reinícios após falha num período de 30 s antes de desistir (predefinição: 2)", "tray": "Iniciar na área de notificação do sistema (apenas no ambiente de trabalho, opção facultativa)", "no_tray": "Desativar o ícone da área de notificação do sistema", "ready_timeout": "Tempo limite da verificação de disponibilidade em ms (também OMNIROUTE_READY_TIMEOUT_MS, predefinição: 60000)", "tls_cert": "Caminho para um certificado TLS (PEM) para disponibilizar HTTPS (também OMNIROUTE_TLS_CERT)", "tls_key": "Caminho para a chave privada TLS (PEM) para disponibilizar HTTPS (também OMNIROUTE_TLS_KEY)" }, "backup": { "title": "Cópia de segurança", "description": "Criar uma cópia de segurança dos dados do OmniRoute", "creating": "A criar a cópia de segurança...", "done": "Cópia de segurança guardada em {path}", "noFiles": "Não existem ficheiros para incluir na cópia de segurança (base de dados não inicializada)", "failed": "Falha na cópia de segurança: {error}", "restoring": "A restaurar a partir de {path}...", "restored": "Restauro concluído.", "restoreDescription": "Restaurar a partir de uma cópia de segurança", "listTitle": "Cópias de segurança disponíveis", "noBackups": "Não foram encontradas cópias de segurança.", "notFound": "Cópia de segurança não encontrada: {name}", "confirmRestore": "Substituir os dados atuais pela cópia de segurança de {ts}?", "createDescription": "Criar uma cópia de segurança dos dados do OmniRoute", "nameOpt": "Nome personalizado da cópia de segurança", "cloudOpt": "Carregar a cópia de segurança para o armazenamento na nuvem", "encryptOpt": "Encriptar a cópia de segurança com AES-256-GCM", "keyFileOpt": "Caminho para o ficheiro que contém a frase secreta de encriptação", "excludeOpt": "Excluir ficheiro que corresponda ao padrão (repetível)", "retentionOpt": "Manter apenas as últimas N cópias de segurança", "passphrasePrompt": "Frase secreta de encriptação:", "noPassphrase": "É necessária uma frase secreta para uma cópia de segurança encriptada.", "cloudFailed": "Aviso: o carregamento para a nuvem falhou. A cópia de segurança local foi guardada.", "cloudUploaded": "Cópia de segurança carregada para a nuvem: {url}", "auto": { "title": "Agendamento das cópias de segurança", "enableDescription": "Ativar cópias de segurança automáticas agendadas", "disableDescription": "Desativar cópias de segurança automáticas agendadas", "statusDescription": "Mostrar o estado atual do agendamento das cópias de segurança", "cronOpt": "Expressão cron para o agendamento (predefinição: diariamente às 3:00)", "enabled": "Cópia de segurança automática ativada (cron: {cron}).", "hint": "O agendamento é lido pelo omniroute serve ao iniciar.", "disabled": "Cópia de segurança automática desativada.", "notConfigured": "Não está configurado nenhum agendamento de cópias de segurança." } }, "health": { "description": "Verificar o estado do servidor e dos componentes", "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", "title": "Estado de funcionamento", "status": "Estado: {status}", "uptime": "Tempo de atividade: {uptime}", "requests": "Pedidos (24 h): {count}", "cost": "Custo (24 h): ${cost}" }, "quota": { "description": "Mostrar a utilização da quota do fornecedor", "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", "noData": "Não estão disponíveis informações sobre a quota." }, "cache": { "description": "Gerir a cache de respostas", "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", "cleared": "Cache limpa.", "clearFailed": "Não foi possível limpar a cache." }, "redis": { "description": "Iniciar um contentor Redis local com um clique (Podman ou Docker) para cache e rastreio de quotas do OmniRoute" }, "test": { "description": "Testar a ligação a um fornecedor", "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", "testing": "A testar {provider} / {model}...", "passed": "Ligação bem-sucedida!", "failed": "A ligação falhou: {error}", "allProvidersOpt": "Testar todos os fornecedores configurados", "latencyOpt": "Mostrar medições de latência (média/mín./máx. em ms)", "repeatOpt": "Repetir o teste N vezes e agregar os resultados", "compareOpt": "Modelos separados por vírgulas para comparar (por exemplo, gpt-4o,claude-3-5-sonnet)", "saveOpt": "Guardar os resultados num ficheiro JSON", "saved": "Resultados guardados em {path}", "compareTitle": "Comparação de modelos", "compareMinTwo": "São necessários pelo menos dois modelos para --compare (separados por vírgulas)", "noProviders": "Não existem fornecedores configurados. Adicione um com: omniroute keys add" }, "update": { "checking": "A procurar atualizações...", "upToDate": "Já está atualizado ({version}).", "available": "Atualização disponível: {current} → {latest}", "installing": "A instalar {latest}...", "done": "Atualizado para {latest}. Reinicie o servidor para aplicar a atualização." }, "mcp": { "title": "Servidor MCP", "running": "Servidor MCP em execução ({transport})", "stopped": "Servidor MCP parado.", "restarted": "Servidor MCP reiniciado.", "stoppedHint": "Execute `omniroute mcp enable` para o ativar.", "enabled": "Servidor MCP ativado.", "disabled": "Servidor MCP desativado.", "enable": { "description": "Ativar o servidor MCP", "transport": "Transporte a utilizar: stdio|sse|streamable-http" }, "disable": { "description": "Desativar o servidor MCP" }, "call": { "description": "Invocar diretamente uma ferramenta MCP", "args": "Objeto de argumentos JSON (em linha)", "args_file": "Caminho para o ficheiro de argumentos JSON", "stream": "Utilizar o endpoint de streaming (/api/mcp/stream)", "scope": "Âmbito necessário (repetível, por exemplo, read:health)" }, "scopes": { "description": "Listar os âmbitos MCP disponíveis", "tool": "Mostrar os âmbitos necessários para uma ferramenta específica" }, "tools": { "description": "Inspecionar ferramentas MCP", "list": { "description": "Listar todas as ferramentas MCP", "scope": "Filtrar por âmbito" }, "info": { "description": "Mostrar metadados de uma ferramenta MCP" }, "schema": { "description": "Mostrar o esquema JSON de entrada/saída de uma ferramenta MCP", "io": "Tipo de esquema: input|output (predefinição: input)" } }, "audit": { "description": "Registo de auditoria MCP (alias de audit --source mcp)" } }, "a2a": { "skills": { "description": "Listar as competências A2A disponíveis no cartão do agente" }, "invoke": { "description": "Invocar uma competência A2A e devolver o ID da tarefa", "input": "Objeto de entrada JSON", "input_file": "Caminho para o ficheiro de entrada JSON", "wait": "Aguardar pela conclusão da tarefa antes de devolver", "timeout": "Tempo limite de espera pela conclusão em ms (predefinição: 60000)" }, "tasks": { "description": "Gerir tarefas A2A", "list": { "status": "Filtrar por estado", "skill": "Filtrar por ID da competência" }, "watch": { "description": "Consultar periodicamente o estado da tarefa até à conclusão" }, "stream": { "description": "Transmitir eventos de execução da tarefa via SSE" }, "logs": { "description": "Mostrar mensagens e artefactos da tarefa" } } }, "policy": { "description": "Gerir políticas de autorização do OmniRoute", "list": { "description": "Listar políticas", "kind": "Filtrar por tipo (allow|deny|rate-limit|cost-cap)", "scope": "Filtrar por âmbito (global|api-key|provider)" }, "get": { "description": "Obter detalhes da política por ID" }, "create": { "description": "Criar uma política a partir de um ficheiro JSON", "file": "Caminho para o ficheiro JSON da política" }, "update": { "description": "Atualizar uma política a partir de um ficheiro JSON", "file": "Caminho para o ficheiro JSON da política" }, "delete": { "description": "Eliminar uma política por ID", "yes": "Ignorar o pedido de confirmação" }, "evaluate": { "description": "Avaliação da política em modo de simulação (código de saída 0=permitido, 4=negado)", "api_key": "Chave de API a avaliar", "action": "Ação a verificar (por exemplo, chat, embed, admin)", "resource": "Caminho ou identificador do recurso", "context": "Contexto adicional como objeto JSON" }, "export": { "description": "Exportar todas as políticas para um ficheiro JSON" }, "import": { "description": "Importar políticas a partir de um ficheiro JSON", "overwrite": "Substituir políticas existentes com o mesmo ID" } }, "compression": { "description": "Configurar e inspecionar o pipeline de compressão do OmniRoute", "status": { "description": "Mostrar o estado e as definições atuais da compressão" }, "configure": { "description": "Configurar as definições de compressão", "engine": "Motor de compressão (caveman|rtk|hybrid|none)", "caveman_agg": "Agressividade do Caveman 0.0–1.0", "rtk_budget": "Orçamento de tokens do RTK", "language_pack": "Pacote de idioma a ativar" }, "engine": { "description": "Obter ou definir o motor de compressão ativo" }, "combos": { "description": "Gerir estatísticas das combinações de compressão" }, "rules": { "description": "Gerir regras de compressão", "add": { "pattern": "Padrão a corresponder (regex ou campo:padrão)", "action": "Ação: drop|shrink|replace" } }, "language_packs": { "description": "Listar pacotes de idiomas de compressão disponíveis" }, "preview": { "description": "Pré-visualizar o efeito da compressão num pedido", "file": "Caminho para o ficheiro JSON do pedido" } }, "tunnel": { "title": "Túneis", "listDescription": "Listar túneis ativos", "createDescription": "Criar um túnel", "created": "Túnel criado: {url}", "stopped": "Túnel parado.", "confirmStop": "Parar o túnel {id}?", "stopDescription": "Parar um túnel", "statusDescription": "Mostrar o estado detalhado de um túnel", "logsDescription": "Mostrar os registos de um túnel", "infoDescription": "Mostrar os detalhes de configuração de um túnel", "rotateDescription": "Gerar um novo URL de túnel", "tailOpt": "Número de linhas de registo a mostrar", "typeRequired": "O tipo de túnel é obrigatório.", "noLogs": "Não existem registos disponíveis.", "notAvailable": "As informações do túnel não estão disponíveis.", "noTunnels": "Não existem túneis ativos.", "infoTitle": "Informações do túnel: {type}", "rotated": "URL do túnel alterado: {url}", "confirmRotate": "Alterar o URL do túnel {type}? (será gerado um novo URL)" }, "stop": { "description": "Parar o servidor OmniRoute", "stopping": "A parar o servidor (PID {pid})...", "stopped": "Servidor parado.", "notRunning": "Não está nenhum servidor em execução.", "portFallback": "Não foi encontrado nenhum ficheiro PID; a tentar parar com base na porta..." }, "restart": { "description": "Reiniciar o servidor OmniRoute", "restarting": "A reiniciar o servidor OmniRoute..." }, "dashboard": { "description": "Abrir o painel do OmniRoute num navegador", "opening": "A abrir o painel em {url}", "urlOnly": "Apresentar o URL do painel sem abrir o navegador", "tui": "Abrir o painel TUI interativo (interface de terminal, 7 separadores)" }, "models": { "description": "Listar modelos disponíveis (requer o servidor)", "search": "Filtrar modelos por ID, nome, fornecedor ou descrição", "noServer": "Servidor não está em execução. Inicie com: omniroute serve", "noModels": "Nenhum modelo encontrado." }, "audit": { "description": "Aceder aos registos de auditoria de conformidade e do MCP", "source": "Origem do registo: all|compliance|mcp (predefinição: all)", "since": "Devolver entradas desde esta data e hora (ISO 8601)", "until": "Devolver entradas até esta data e hora (ISO 8601)", "tail": { "description": "Mostrar entradas recentes do registo de auditoria", "follow": "Acompanhar continuamente novas entradas (consulta a cada 2 s)", "limit": "Número máximo de entradas a mostrar (predefinição: 100)" }, "search": { "description": "Pesquisar entradas do registo de auditoria por palavra-chave", "limit": "Número máximo de resultados (predefinição: 200)", "actor": "Filtrar por ID do interveniente", "action": "Filtrar por nome da ação" }, "export": { "description": "Exportar o registo de auditoria para um ficheiro", "format": "Formato de saída: jsonl|csv (predefinição: jsonl)" }, "stats": { "description": "Mostrar estatísticas do registo de auditoria", "period": "Período: 1d|7d|30d (predefinição: 7d)" }, "get": { "description": "Obter uma única entrada do registo de auditoria por ID" } }, "skills": { "description": "Gerir competências do OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", "list": { "description": "Listar competências instaladas", "type": "Filtrar por tipo (sandbox|custom|builtin|hybrid|skillssh)", "enabled": "Mostrar apenas competências ativadas", "disabled": "Mostrar apenas competências desativadas", "api_key": "Filtrar por chave de API" }, "get": { "description": "Obter detalhes de uma competência por ID" }, "install": { "description": "Instalar uma competência a partir de um ficheiro ou URL", "from_file": "Caminho para o ficheiro de definição JSON da competência", "from_url": "URL da definição remota da competência", "type": "Tipo de competência (sandbox|custom|hybrid)", "enable": "Ativar a competência após a instalação" }, "enable": { "description": "Ativar uma competência por ID" }, "disable": { "description": "Desativar uma competência por ID", "yes": "Ignorar o pedido de confirmação" }, "delete": { "description": "Eliminar uma competência por ID", "yes": "Ignorar o pedido de confirmação" }, "execute": { "description": "Executar uma competência por ID", "input": "Objeto de entrada JSON", "input_file": "Caminho para o ficheiro de entrada JSON", "timeout": "Tempo limite de execução em ms (predefinição: 30000)" }, "executions": { "description": "Listar o histórico de execução de competências", "skill": "Filtrar por ID da competência", "limit": "Máximo de resultados (predefinição: 50)", "status": "Filtrar por estado (running|completed|failed)" }, "skillssh": { "description": "Gerir competências instaladas através de SSH" }, "marketplace": { "description": "Explorar e instalar competências do marketplace" }, "mp": { "search": { "description": "Pesquisar pacotes no marketplace", "category": "Filtrar por categoria", "tag": "Filtrar por etiqueta", "limit": "Máximo de resultados (predefinição: 30)", "sort": "Ordenar por: downloads|rating|recent" }, "info": { "description": "Mostrar os detalhes e o readme do pacote" }, "install": { "description": "Instalar um pacote do marketplace", "version": "Versão do pacote (predefinição: latest)", "enable": "Ativar após a instalação", "yes": "Ignorar o pedido de confirmação" }, "categories": { "description": "Listar categorias do marketplace" }, "featured": { "description": "Mostrar pacotes em destaque no marketplace" } } }, "memory": { "description": "Gerir a memória de conversação do OmniRoute (FTS5 + vetorial)", "search": { "description": "Pesquisar entradas de memória através de uma consulta semântica", "type": "Filtrar por tipo de memória (user|feedback|project|reference)", "limit": "Máximo de resultados (predefinição: 20)", "api_key": "Filtrar por chave de API", "token_budget": "Limitar o total de tokens nos resultados" }, "add": { "description": "Adicionar uma nova entrada de memória", "content": "Conteúdo textual da memória", "file": "Ler conteúdo de um ficheiro", "type": "Tipo de memória (predefinição: user)", "metadata": "Objeto de metadados JSON", "api_key": "Associar a uma chave de API" }, "clear": { "description": "Eliminar entradas de memória que correspondam aos filtros", "type": "Filtrar por tipo", "older": "Eliminar entradas anteriores à duração especificada (30d, 6m, 1y)", "api_key": "Filtrar por chave de API", "yes": "Ignorar o pedido de confirmação" }, "list": { "description": "Listar entradas de memória sem ordenação por relevância da pesquisa", "type": "Filtrar por tipo", "limit": "Máximo de resultados (predefinição: 100)", "api_key": "Filtrar por chave de API" }, "get": { "description": "Obter uma única entrada de memória por ID" }, "delete": { "description": "Eliminar uma entrada de memória por ID", "yes": "Ignorar pedido de confirmação" }, "health": { "description": "Mostrar o estado de funcionamento do subsistema de memória (FTS5 + Qdrant)" } }, "oauth": { "description": "Gerir ligações de fornecedores OAuth", "providers": { "description": "Listar fornecedores compatíveis com OAuth e os respetivos tipos de fluxo" }, "start": { "description": "Iniciar o fluxo de autorização OAuth para um fornecedor", "provider": "ID do fornecedor (gemini, copilot, cursor, …)", "no_browser": "Mostrar apenas o URL — não abrir o navegador", "import_system": "Importar automaticamente credenciais da configuração do sistema local", "social": "Fornecedor de início de sessão com rede social (google|github) — obrigatório para kiro", "timeout": "Tempo limite de espera pela autorização em ms (predefinição: 300000)" }, "status": { "description": "Listar ligações OAuth ativas", "provider": "Filtrar por ID do fornecedor" }, "revoke": { "description": "Revogar uma ligação OAuth", "provider": "ID do fornecedor a revogar", "connection_id": "Revogar uma ligação específica por ID", "yes": "Ignorar pedido de confirmação" } }, "cloud": { "description": "Gerir tarefas de agentes de IA na cloud (codex, devin, jules)", "agents": { "description": "Listar agentes disponíveis na cloud" }, "agent": { "description": "Gerir tarefas do agente {agent} na cloud", "auth": { "description": "Autorizar {agent} através de OAuth" } }, "task": { "description": "Gerir tarefas de agentes na cloud", "create": { "description": "Criar uma nova tarefa de agente", "title": "Título da tarefa (por predefinição, os primeiros 80 carateres do pedido)", "prompt": "Texto do pedido da tarefa", "prompt_file": "Ler o pedido a partir de um ficheiro", "repo": "URL do repositório a clonar para a tarefa", "branch": "Nome do ramo a utilizar", "metadata": "Objeto de metadados JSON" }, "list": { "description": "Listar tarefas de agentes", "status": "Filtrar por estado (running|completed|failed|cancelled)", "limit": "Número máximo de resultados (predefinição: 50)" }, "get": { "description": "Obter detalhes da tarefa por ID" }, "status": { "description": "Mostrar o estado da tarefa (running|completed|failed|cancelled)" }, "cancel": { "description": "Cancelar uma tarefa em execução", "yes": "Ignorar pedido de confirmação" }, "approve": { "description": "Aprovar o plano do agente para iniciar a execução" }, "message": { "description": "Enviar uma mensagem para uma tarefa em execução" } }, "sources": { "description": "Listar ficheiros de origem produzidos por uma tarefa" } }, "eval": { "description": "Gerir conjuntos e execuções de avaliação", "suites": { "description": "Gerir conjuntos de avaliação", "list": { "description": "Listar conjuntos de avaliação" }, "get": { "description": "Obter detalhes do conjunto de avaliação por ID" }, "create": { "description": "Criar um conjunto de avaliação a partir de um ficheiro JSON", "file": "Caminho para o ficheiro JSON de definição do conjunto" } }, "run": { "description": "Iniciar uma execução de avaliação para um conjunto", "model": "ID do modelo a avaliar (predefinição: auto)", "combo": "Forçar uma combinação específica pelo nome", "concurrency": "Número de amostras simultâneas (predefinição: 4)", "tag": "Adicionar uma etiqueta a esta execução para filtragem posterior", "watch": "Acompanhar o progresso da execução até à conclusão" }, "list": { "description": "Listar execuções de avaliação", "suite": "Filtrar por ID do conjunto", "status": "Filtrar por estado", "since": "Devolver execuções desde esta data e hora", "limit": "Número máximo de resultados (predefinição: 50)" }, "get": { "description": "Obter detalhes da execução de avaliação por ID" }, "results": { "description": "Mostrar resultados das amostras de uma execução de avaliação", "failed": "Mostrar apenas amostras com falha" }, "cancel": { "description": "Cancelar uma avaliação em execução", "yes": "Ignorar pedido de confirmação" }, "scorecard": { "description": "Mostrar o quadro de pontuações de uma execução de avaliação concluída" } }, "webhooks": { "description": "Gerir webhooks do OmniRoute", "events": { "description": "Listar todos os tipos de eventos de webhook disponíveis" }, "list": { "description": "Listar webhooks configurados" }, "get": { "description": "Obter detalhes do webhook por ID" }, "add": { "description": "Registar um novo webhook", "url": "URL de destino", "events": "Lista de tipos de eventos separados por vírgulas", "secret": "Segredo de assinatura HMAC", "header": "Cabeçalho adicional no formato key=value (repetível)", "no_enabled": "Criar webhook no estado desativado" }, "update": { "description": "Atualizar um webhook existente", "enabled": "Definir o estado de ativação (true|false)" }, "remove": { "description": "Eliminar um webhook", "yes": "Ignorar pedido de confirmação" }, "test": { "description": "Enviar um evento de teste para um webhook", "event": "Tipo de evento a simular (predefinição: request.completed)" } }, "program": { "description": "OmniRoute — Router de IA inteligente com fallback automático", "version": "Mostrar versão e sair", "output": "Formato de saída (table, json, jsonl, csv)", "quiet": "Suprimir saída não essencial", "no_color": "Desativar saída colorida", "timeout": "Timeout de pedidos HTTP em milissegundos", "api_key": "Chave de API para o servidor OmniRoute", "base_url": "URL base do servidor OmniRoute", "context": "Contexto/perfil do servidor para este comando", "lang": "Definir idioma de apresentação do CLI (substitui OMNIROUTE_LANG)" }, "files": { "description": "Gerir ficheiros (carregar, listar, obter, transferir, eliminar)", "list": { "purpose": "Filtrar por finalidade", "limit": "Número máximo de resultados" }, "get": { "description": "Obter metadados do ficheiro" }, "upload": { "description": "Carregar um ficheiro", "purpose": "Finalidade do ficheiro (batch, assistants, fine-tune)" }, "content": { "description": "Descarregar o conteúdo do ficheiro", "out": "Guardar no caminho (predefinição: stdout)" }, "delete": { "yes": "Ignorar confirmação" } }, "batches": { "description": "Gerir tarefas em lote compatíveis com OpenAI", "list": { "status": "Filtrar por estado", "limit": "Máximo de resultados" }, "create": { "description": "Criar uma tarefa em lote", "inputFile": "ID do ficheiro de entrada", "endpoint": "Endpoint de destino", "window": "Janela de conclusão", "metadata": "Adicionar metadados chave=valor" }, "submit": { "description": "Carregar ficheiro JSONL e criar lote", "jsonl": "Caminho para o ficheiro JSONL", "endpoint": "Endpoint de destino", "wait": "Aguardar pela conclusão" }, "cancel": { "yes": "Ignorar confirmação" }, "wait": { "timeout": "Tempo limite em ms" }, "output": { "out": "Guardar a saída no caminho" }, "errors": { "out": "Guardar os erros no caminho" } }, "translator": { "description": "Traduzir corpos de pedidos entre formatos de LLM", "detect": { "description": "Detetar o formato do corpo" }, "translate": { "description": "Converter o corpo de um formato para outro" }, "send": { "description": "Traduzir e encaminhar para o upstream" }, "stream": { "description": "Traduzir em fluxo contínuo um corpo de pedido" }, "from": "Formato de origem (openai|anthropic|gemini|cohere)", "to": "Formato de destino (openai|anthropic|gemini|cohere)", "file": "Caminho para o ficheiro JSON do corpo do pedido", "out": "Guardar a saída num ficheiro", "model": "Substituir o modelo", "history": { "limit": "Máximo de resultados" } }, "pricing": { "description": "Gerir dados de preços dos modelos", "sync": { "description": "Sincronizar preços a partir de fontes upstream", "provider": "Filtrar por fornecedor", "force": "Forçar nova sincronização" }, "list": { "provider": "Filtrar por fornecedor", "model": "Filtrar por modelo", "limit": "Máximo de resultados" }, "defaults": { "description": "Gerir preços predefinidos", "input": "Custo de entrada por 1 milhão de tokens (USD)", "output": "Custo de saída por 1 milhão de tokens (USD)", "cacheRead": "Custo de leitura da cache por 1 milhão de tokens (USD)", "cacheWrite": "Custo de escrita na cache por 1 milhão de tokens (USD)" }, "diff": { "description": "Mostrar divergência em relação aos preços de origem", "model": "Filtrar por modelo" } }, "radar": { "description": "Inspecionar e sincronizar os feeds do catálogo Radar local", "status": "Mostrar as definições locais do Radar e o estado da cache dos feeds", "sync": "Sincronizar catálogo, referências, ofertas e Intel através do servidor local" }, "resilience": { "description": "Inspecionar e gerir mecanismos de resiliência", "status": { "provider": "Filtrar por fornecedor" }, "breakers": { "provider": "Filtrar por fornecedor" }, "cooldowns": { "provider": "Filtrar por fornecedor", "connectionId": "Filtrar por ID de ligação" }, "lockouts": { "provider": "Filtrar por fornecedor", "model": "Filtrar por modelo" }, "reset": { "description": "Repor o estado do disjuntor/período de espera", "provider": "Fornecedor a repor", "connectionId": "ID de ligação a repor", "model": "Modelo cujo bloqueio será reposto", "allCooldowns": "Repor todos os períodos de espera do fornecedor", "yes": "Ignorar confirmação" }, "profile": { "description": "Gerir perfil de resiliência", "name": "Nome do perfil" }, "config": { "description": "Gerir configuração de resiliência", "threshold": "Limite de falhas", "resetTimeout": "Tempo limite de reposição em ms", "baseCooldown": "Período de espera base em ms" } }, "nodes": { "description": "Gerir nós (endpoints) dos fornecedores", "list": { "provider": "Filtrar por fornecedor", "enabled": "Mostrar apenas nós ativados" }, "add": { "provider": "Nome do fornecedor", "baseUrl": "URL base do nó", "name": "Nome do nó", "weight": "Peso do balanceamento de carga", "region": "Etiqueta da região", "authHeader": "Cabeçalho de autenticação personalizado (key=value)" }, "update": { "baseUrl": "Novo URL base", "name": "Novo nome", "weight": "Novo peso", "region": "Nova região", "enabled": "Ativar ou desativar (true|false)" }, "remove": { "yes": "Ignorar confirmação" }, "validate": { "baseUrl": "URL a validar", "provider": "Fornecedor usado na validação" }, "test": { "description": "Enviar pedido de teste para o nó" }, "metrics": { "description": "Mostrar métricas do nó", "period": "Período de tempo (por exemplo, 24h, 7d)" } }, "context": { "description": "Configurar o pipeline de engenharia de contexto (Caveman, RTK)", "analytics": { "period": "Período de tempo (por exemplo, 7d, 30d)" }, "caveman": { "description": "Gerir o compressor de contexto Caveman", "config": { "description": "Mostrar ou atualizar a configuração do Caveman", "aggressiveness": "Agressividade 0,0–1,0", "maxShrinkPct": "Percentagem máxima de redução", "preserveTags": "Etiquetas separadas por vírgulas a preservar" } }, "rtk": { "description": "Gerir o otimizador de contexto RTK", "config": { "description": "Mostrar ou atualizar a configuração do RTK", "tokenBudget": "Orçamento de tokens para o RTK", "reservePct": "Percentagem de reserva" }, "filters": { "description": "Gerir filtros do RTK", "pattern": "Padrão do filtro (regex)", "priority": "Prioridade do filtro (predefinição: 100)", "action": "Ação do filtro: drop|shrink|replace", "yes": "Ignorar confirmação" }, "test": { "file": "Caminho para o ficheiro JSON do pedido" } }, "combos": { "description": "Gestão de combinações sensível ao contexto" } }, "sessions": { "description": "Inspecionar e gerir sessões ativas", "list": { "user": "Filtrar por utilizador", "kind": "Filtrar por tipo (dashboard|api-key|mcp|a2a)", "active": "Mostrar apenas sessões ativas", "limit": "Máximo de resultados (predefinição: 100)" }, "expire": { "yes": "Ignorar confirmação" }, "expireAll": { "user": "Utilizador cujas sessões devem expirar", "yes": "Ignorar confirmação" } }, "tags": { "description": "Gerir etiquetas de recursos", "add": { "color": "Cor da etiqueta (hexadecimal ou nome)", "description": "Descrição da etiqueta" }, "remove": { "yes": "Ignorar confirmação" }, "assign": { "tag": "Nome da etiqueta", "to": "Recurso de destino como tipo:id (por exemplo, provider:openai)" }, "unassign": { "tag": "Nome da etiqueta", "from": "Recurso de origem como tipo:id" } }, "openapi": { "description": "Aceder e testar a especificação OpenAPI do OmniRoute", "dump": { "description": "Exportar a especificação OpenAPI para stdout ou para um ficheiro", "format": "Formato de saída: yaml|json (predefinição: yaml)", "out": "Guardar no caminho do ficheiro" }, "validate": { "description": "Validar a especificação OpenAPI" }, "try": { "description": "Testar um endpoint da API através da especificação", "method": "Método HTTP (predefinição: GET)", "body": "Caminho para o ficheiro JSON do corpo do pedido", "query": "Parâmetro de consulta como key=value (repetível)", "header": "Cabeçalho como key=value (repetível)" }, "endpoints": { "description": "Listar todos os endpoints da API", "search": "Filtrar por caminho ou resumo" }, "paths": { "description": "Listar todos os caminhos da API" } }, "combo": { "title": "Combinações", "switched": "Combinação ativa: {name}", "created": "Combinação criada: {name}", "deleted": "Combinação eliminada: {name}", "noCombos": "Não existem combinações configuradas.", "confirmDelete": "Eliminar a combinação {name}?", "suggest": { "description": "Sugerir a melhor combinação para uma tarefa utilizando uma classificação por IA", "task": "Descrição da tarefa", "maxCost": "Custo máximo por pedido em USD", "maxLatencyMs": "Latência máxima em milissegundos", "weights": "Ponderações de classificação em JSON, por exemplo, {\"latency\":0.7,\"cost\":0.3}", "top": "Número de melhores candidatos a apresentar (predefinição: 5)", "explain": "Imprimir a justificação em stderr", "switch": "Ativar a combinação mais bem classificada" } }, "oneproxy": { "description": "Gerir o conjunto de servidores upstream do OneProxy", "stats": { "provider": "Filtrar por fornecedor", "period": "Período de tempo (predefinição: 24h)" }, "fetch": { "description": "Obter proxies do conjunto", "count": "Número de proxies a obter (predefinição: 1)", "type": "Tipo de proxy: http|socks5 (predefinição: http)" }, "rotate": { "description": "Forçar a rotação do proxy", "provider": "Fornecedor para o qual efetuar a rotação", "connectionId": "ID de ligação específico a rodar" }, "config": { "description": "Mostrar ou atualizar a configuração do OneProxy", "enabled": "Ativar o conjunto de proxies (true|false)", "poolSize": "Tamanho do conjunto", "providerSource": "URL do fornecedor de proxies", "rotationPolicy": "Política de rotação: sticky|per-request|periodic" }, "pool": { "description": "Listar o conjunto de proxies atual com métricas" } }, "open": { "description": "Abrir uma página específica do painel do OmniRoute no navegador", "url": "Apresentar apenas o URL, não abrir o navegador" }, "telemetry": { "description": "Aceder aos dados de telemetria agregados", "summary": { "description": "Mostrar o resumo da telemetria agregada", "period": "Período: 24h|7d|30d (predefinição: 24h)", "compareTo": "Comparar com o período anterior" }, "export": { "description": "Exportar eventos de telemetria para JSONL", "out": "Caminho do ficheiro de saída (predefinição: telemetry.jsonl)", "period": "Período para exportação (predefinição: 7d)" } }, "sync": { "description": "Sincronizar a configuração entre instâncias do OmniRoute", "push": { "description": "Enviar a configuração para a cloud ou para uma instância remota", "target": "Destino (cloud ou context:name)", "bundle": "Componentes do pacote a sincronizar", "dryRun": "Pré-visualizar sem aplicar" }, "pull": { "description": "Obter a configuração a partir da cloud ou de uma instância remota", "source": "Origem (cloud ou context:name)", "merge": "Intercalar com a configuração existente", "replace": "Substituir a configuração existente", "dryRun": "Pré-visualizar sem aplicar" }, "diff": { "source": "Contexto de origem", "target": "Contexto de destino" }, "bundle": { "description": "Exportar a configuração como ficheiro de pacote", "include": "Componentes a incluir (separados por vírgulas)" }, "import": { "description": "Importar um ficheiro de pacote", "dryRun": "Validar sem aplicar" }, "initialize": { "fromCloud": "Inicializar a partir de uma cópia de segurança na cloud" }, "tokens": { "description": "Gerir tokens de sincronização", "create": { "name": "Nome do token", "scope": "Âmbito do token", "ttl": "TTL do token (por exemplo, 30d)" }, "revoke": { "yes": "Ignorar confirmação" } }, "resolve": { "description": "Resolver conflitos de sincronização interativamente" } }, "config": { "contexts": { "description": "Gerir contextos/perfis do servidor (adicionar, utilizar, listar, mostrar, remover, mudar o nome, exportar, importar)" }, "lang": { "description": "Gerir o idioma de apresentação da CLI", "getDescription": "Mostrar o código do idioma atualmente ativo", "setDescription": "Definir o idioma de apresentação e guardá-lo na configuração", "listDescription": "Listar todos os idiomas disponíveis", "listTitle": "Idiomas disponíveis", "current": "Idioma: {code} ({name})", "saved": "Idioma definido como {code} ({name}).", "noCode": "É necessário indicar o código do idioma. Execute 'omniroute config lang list' para ver os códigos disponíveis.", "unknown": "Código de idioma desconhecido: {code}. Execute 'omniroute config lang list' para ver os códigos disponíveis.", "alreadySet": "O idioma já está definido como {code}.", "envHint": "Dica: também pode definir OMNIROUTE_LANG={code} no seu ambiente." } }, "completion": { "description": "Gerar ou instalar scripts de conclusão da shell", "zsh": "Apresentar o script de conclusão para zsh", "bash": "Apresentar o script de conclusão para bash", "fish": "Apresentar o script de conclusão para fish", "install": "Instalar globalmente o script de conclusão para a shell detetada", "refresh": "Atualizar a cache de combinações/fornecedores/modelos" }, "logs": { "description": "Transmitir ou exportar registos de pedidos", "follow": "Transmitir registos em tempo real", "filter": "Filtrar por nível (error,warn,info) — separado por vírgulas", "lines": "Número de linhas a obter", "timeout": "Tempo limite da ligação em ms", "baseUrl": "URL base da API do OmniRoute", "requestId": "Filtrar por ID do pedido", "apiKey": "Filtrar por chave de API", "combo": "Filtrar por nome da combinação", "status": "Filtrar por código de estado HTTP", "durationMin": "Duração mínima do pedido em ms", "durationMax": "Duração máxima do pedido em ms", "export": "Guardar registos num ficheiro (json/jsonl/csv)", "exported": "Registos guardados em {path}", "stopped": "Transmissão de registos interrompida.", "streamError": "Erro na transmissão de registos: {message}" }, "tray": { "description": "Controlar o ícone da área de notificação", "show": "Mostrar o ícone da área de notificação (se o servidor estiver a ser executado com --tray)", "hide": "Ocultar o ícone da área de notificação", "quit": "Sair do OmniRoute através da área de notificação" }, "autostart": { "description": "Gerir o arranque automático do OmniRoute no início da sessão (Linux: serviço de utilizador systemd)", "enable": "Ativar o arranque automático no início da sessão", "disable": "Desativar o arranque automático no início da sessão", "toggle": "Alternar o arranque automático no início da sessão", "status": "Mostrar o estado do arranque automático" }, "runtime": { "description": "Gerir dependências nativas do runtime", "check": "Verificar o estado das dependências nativas no diretório do runtime", "repair": "Reinstalar as dependências nativas no diretório do runtime", "repair_force": "Forçar a reinstalação mesmo que sejam válidas", "clean": "Remover o diretório do runtime (liberta espaço em disco)", "clean_yes": "Ignorar confirmação" }, "repl": { "description": "REPL interativo com múltiplas interações e LLM", "model": "Modelo a utilizar (predefinição: auto)", "combo": "Nome da combinação a utilizar", "system": "Prompt de sistema", "resume": "Retomar uma sessão guardada pelo nome" }, "plugin": { "description": "Gerir plugins da CLI (omniroute-cmd-*)", "list": "Listar plugins instalados", "install": "Instalar um plugin a partir do npm ou de um caminho local", "remove": "Remover um plugin instalado", "info": "Mostrar detalhes de um plugin instalado", "search": "Pesquisar plugins disponíveis no registo do npm", "update": "Atualizar plugins instalados", "scaffold": "Gerar a estrutura base de um novo plugin" }, "launch": { "description": "Iniciar o Claude Code configurado para o OmniRoute (local ou remoto, com --profile)", "token": "Token que o cliente Claude deve enviar (ANTHROPIC_AUTH_TOKEN)", "notRunning": "O OmniRoute não está acessível em {port}. Inicie-o com 'omniroute serve'.", "notFound": "A CLI 'claude' não foi encontrada em PATH." }, "run": { "description": "Iniciar um destino de CLI suportado através do OmniRoute" }, "setupClaude": { "description": "Gerar perfis do Claude Code em ~/.claude/profiles a partir do catálogo de modelos do OmniRoute" }, "connect": { "description": "Ligar a um servidor OmniRoute remoto e entrar no modo remoto" }, "tokens": { "description": "Gerir tokens de acesso à CLI com âmbito definido (modo remoto)" }, "configure": { "description": "Selecionar um fornecedor+modelo no servidor ativo e configurar uma CLI local suportada" }, "launchCodex": { "description": "Iniciar a Codex CLI configurada para o OmniRoute (local ou VPS remoto)" }, "setupCodex": { "description": "Gerar ficheiros de perfil em ~/.codex a partir do catálogo de modelos em tempo real do OmniRoute" }, "packs": { "description": "Gerir pacotes opcionais do runtime (ML / automatização do navegador)", "listDescription": "Listar pacotes opcionais e o respetivo estado de instalação", "installDescription": "Instalar um pacote opcional em DATA_DIR", "verifyDescription": "Verificar os pacotes instalados com base no índice de somas de verificação fornecido", "removeDescription": "Remover um pacote opcional instalado", "sourceOpt": "Diretório que contém os conteúdos dos pacotes e o índice de pacotes", "warnNoIndex": "optional-packs.index.json não encontrado — a instalação/verificação não está disponível nesta cópia local (os pacotes para ambiente de trabalho incluem-no)", "errUnknown": "pacote desconhecido: {name}", "errNoIndex": "índice de pacotes não encontrado; indique --source contendo o conteúdo do pacote (os pacotes para ambiente de trabalho incluem-no junto da aplicação)", "installed": "pacote \"{name}\" instalado e verificado em {dir}", "restartHint": "reinicie o servidor OmniRoute (ou a aplicação para computador) para que o ambiente de execução detete o pacote", "removed": "pacote \"{name}\" removido", "notInstalled": "o pacote \"{name}\" não estava instalado", "verifyOk": "todos os pacotes instalados foram verificados", "verifyFailed": "{count} pacote(s) falharam a verificação", "noneInstalled": "não estão instalados pacotes opcionais" } }