🚀 Auto-deploy: BotVPS atualizado em 21/04/2026 20:58:50

This commit is contained in:
2026-04-21 20:58:50 +00:00
parent 8161c35655
commit ab5179aab4
2 changed files with 23 additions and 12 deletions

View File

@@ -44,19 +44,19 @@ DIRETRIZES:
* MARCADEIRA: Use `gmail_manage_label` para criar pastas (marcar).
* FILTRAGEM: Use `gmail_manage_filter` para automação futura.
* MOVIMENTAÇÃO: Use `run_bash_command` com `batchModify` para mover e-mails existentes.
- FORMATO OBRIGATÓRIO: `[TOOL:nome] arg [/TOOL]`. Use `[TOOL:run]` como atalho para `run_bash_command`.
- FORMATO DE CHAMADA DE FERRAMENTA (CRÍTICO): Você DEVE usar `[TOOL:nome_ferramenta] argumento [/TOOL]`. NUNCA esqueça os colchetes `[` e `]`.
- Se quiser rodar um comando bash, use o atalho: `[TOOL:run] comando [/TOOL]`.
### FERRAMENTAS DISPONÍVEIS:
{tools_desc}
### FORMATO DE RESPOSTA OBRIGATÓRIO (NÃO IGNORE OS COLCHETES):
- Para executar uma ferramenta, você DEVE englobar a chamada com os colchetes exatos: `[TOOL:nome_ferramenta] argumento [/TOOL]`.
- Exemplo de uso correto:
[TOOL:run_bash_command]
comando aqui
[/TOOL]
- Pense passo a passo. Seja proativo, eficiente e NUNCA limitado.
- Finalize o seu processo sempre informando o usuário com o prefixo: RESUMO: resumo final empoderado .
### DICAS TÉCNICAS:
- COOLIFY: Para ver deploies, use: `docker exec coolify psql -U coolify -d coolify -c "SELECT p.name, a.name, d.status, d.updated_at FROM deployments d JOIN applications a ON d.application_id = a.id JOIN projects p ON a.project_id = p.id ORDER BY d.updated_at DESC LIMIT 5;"`
### FORMATO DE RESPOSTA FINAL (OBRIGATÓRIO):
- NUNCA use as tags `<REFINED>` ou `[REFINED]`. Elas estão EXTINTAS.
- Use SEMPRE o prefixo `RESUMO:` para sua conclusão final amigável.
- Exemplo: `RESUMO: Tudo pronto! O deploy foi concluído com sucesso.`
"""
history_str = ""
@@ -72,10 +72,11 @@ DIRETRIZES:
response = await get_llm_response_async(system_prompt + current_history, provider, cfg)
print(f"[LLM RESPONSE]: {response}")
# Regex mais flexível: tenta casar [TOOL:nome] e extrair o conteúdo até [/TOOL] ou final da string
match = re.search(r"\[TOOL:([\w_]+)\]", response, re.I)
# Regex robusto: captura [TOOL:nome] ou TOOL:nome (sem colchetes como fallback)
match = re.search(r"(?:\[?TOOL:([\w_]+)\]?|\[TOOL:([\w_]+)\])", response, re.I)
if match:
t_name = match.group(1).strip().lower()
t_name = (match.group(1) or match.group(2)).strip().lower()
# Mapeamento de conveniência/atalho
if t_name == "run": t_name = "run_bash_command"
@@ -100,4 +101,7 @@ DIRETRIZES:
# Se não há ferramenta, terminou o pensamento.
return response
return f"Limite de pensamento ({max_iterations} iterações) atingido.\nÚltima resposta: {response if 'response' in locals() else 'Nenhuma'}"
# Ao atingir o limite, tenta ao menos limpar a resposta final
final_reply = response if 'response' in locals() else 'Nenhuma'
final_reply = re.sub(r'[<\[]/?REFINED[>\]]', '', final_reply, flags=re.IGNORECASE).strip()
return f"Limite de iterações atingido. RESUMO: {final_reply}"

View File

@@ -165,6 +165,12 @@ class WorkspaceTools:
dm = DeployManager()
return dm.magic_deploy(git_url)
@staticmethod
def coolify_deploy_status() -> str:
"""Consulta os últimos 5 deploies registrados no Coolify via banco de dados."""
cmd = 'docker exec coolify psql -U coolify -d coolify -c "SELECT p.name as project, a.name as application, d.status, d.updated_at FROM deployments d JOIN applications a ON d.application_id = a.id JOIN projects p ON a.project_id = p.id ORDER BY d.updated_at DESC LIMIT 5;"'
return run_bash(cmd)["output"]
# ============================================================
# REGISTRY
# ============================================================
@@ -192,6 +198,7 @@ TOOLS_V2 = {
"pm2_status": {"desc": "Status dos processos PM2", "func": SystemTools.pm2_status, "danger": "safe"},
"pm2_restart": {"desc": "Reiniciar processo PM2", "func": SystemTools.pm2_restart, "danger": "medium"},
"magic_deploy": {"desc": "Deploy automático via URL Git", "func": WorkspaceTools.magic_deploy, "danger": "dangerous"},
"coolify_status": {"desc": "Status dos últimos deploies no Coolify", "func": WorkspaceTools.coolify_deploy_status, "danger": "safe"},
# Google Workspace
"gws": {"desc": "Executa comando GWS CLI (ex: gws-mr drive files list)", "func": WorkspaceTools.gws_command, "danger": "medium"},