File size: 5,343 Bytes
fea1bd1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# -*- coding: utf-8 -*-
# APENAS A FUNÇÃO handle_automation_command CORRIGIDA

def handle_automation_command(command: str, args: str = "") -> str:
    """
    Handler unificado para todos os comandos de automação
    RETORNA STRING (não Dict) para compatibilidade com main_agent.py

    Args:
        command (str): Comando sem o prefixo / (ex: "search", "research")
        args (str): Argumentos do comando

    Returns:
        str: Resultado formatado da execução
    """
    
    # Importar get_automation_master que sabemos que existe
    try:
        from tools.automation_master import get_automation_master
    except ImportError as e:
        return f"❌ **Erro:** Módulo automation_master não encontrado: {str(e)}"
    
    # Comandos mapeados diretamente para automation_master
    try:
        master = get_automation_master()
        
        if command == "search":
            if not args.strip():
                return "❌ **Erro:** Forneça uma consulta de busca.\n💡 **Exemplo:** `/auto_search Python tutorials`"
            result = master.search_and_analyze(args.strip())
            
        elif command == "browse":
            if not args.strip():
                return "❌ **Erro:** Forneça uma URL.\n💡 **Exemplo:** `/auto_browse https://python.org`"
            result = master.navigate_to(args.strip())
            
        elif command == "click":
            if not args.strip():
                return "❌ **Erro:** Forneça um seletor.\n💡 **Exemplo:** `/auto_click #button-id`"
            parts = args.strip().split(maxsplit=1)
            selector = parts[0]
            selector_type = parts[1] if len(parts) > 1 else "css"
            result = master.click_element(selector, selector_type)
            
        elif command == "screenshot":
            name = args.strip() if args.strip() else None
            result = master.take_screenshot(name)
            
        elif command == "research":
            if not args.strip():
                return "❌ **Erro:** Forneça um tópico de pesquisa.\n💡 **Exemplo:** `/auto_research Claude AI features`"
            
            parts = args.strip().rsplit(maxsplit=1)
            topic = args.strip()
            num_sites = 3
            
            if len(parts) == 2 and parts[1].isdigit():
                topic = parts[0]
                num_sites = min(int(parts[1]), 10)
            
            result = master.auto_research_and_save(topic, num_sites)
            
        elif command == "type":
            if not args.strip():
                return "❌ **Erro:** Forneça texto para digitar.\n💡 **Exemplo:** `/auto_type Hello World`"
            result = master.type_text(args.strip())
            
        elif command == "keys":
            if not args.strip():
                return "❌ **Erro:** Forneça teclas.\n💡 **Exemplo:** `/auto_keys ctrl c`"
            keys = args.strip().split()
            result = master.press_key_combination(*keys)
            
        elif command == "folder":
            if not args.strip():
                return "❌ **Erro:** Forneça caminho da pasta.\n💡 **Exemplo:** `/auto_folder C:/Users/marco/Documents`"
            result = master.open_folder(args.strip())
            
        elif command == "find_files":
            if not args.strip():
                return "❌ **Erro:** Forneça padrão de busca.\n💡 **Exemplo:** `/auto_find_files *.py`"
            parts = args.strip().split(maxsplit=1)
            if len(parts) == 1:
                search_path = "."
                pattern = parts[0]
            else:
                search_path = parts[0]
                pattern = parts[1]
            result = master.search_files(search_path, pattern)
            
        elif command == "status":
            # Call automation_master status directly
            try:
                result = master.get_status_report()  # Assumindo que existe
            except AttributeError:
                # Fallback - criar status manual
                return """📊 **Status da Automação HASHIRU**

**Sistema:** ✅ Operacional
**Automation Master:** ✅ Carregado (23.6 KB)
**Comandos:** search, browse, click, screenshot, research, type, keys, folder, find_files

**Para detalhes completos:** Verificar automation_master.py diretamente"""
            
        else:
            available_commands = ["search", "browse", "click", "screenshot", "research", 
                                "type", "keys", "folder", "find_files", "status"]
            return f"❌ Comando de automação desconhecido: **{command}**\n\n💡 **Disponíveis:** {', '.join(available_commands)}"
        
        # Convert result dict to string
        if isinstance(result, dict):
            if "error" in result:
                return f"❌ **Erro:** {result['error']}"
            elif result.get("success", True):
                message = result.get("message", "")
                if message:
                    return message
                else:
                    return f"✅ **Comando {command} executado com sucesso**"
            else:
                return f"⚠️ **Resultado parcial:** {result}"
        else:
            return str(result)
        
    except Exception as e:
        return f"❌ **Erro na automação {command}:** {str(e)[:150]}..."