File size: 1,459 Bytes
508316a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# workflows/engine.py
import logging
from browser.manager import BrowserManager
from agent.brain import AgentBrain

logger = logging.getLogger(__name__)

class WorkflowEngine:
    def __init__(self):
        self.browser_manager = BrowserManager()
        
    async def start(self):
        await self.browser_manager.initialize()
        logger.info("WorkflowEngine gestartet.")
        
    async def stop(self):
        await self.browser_manager.close_all()
        logger.info("WorkflowEngine gestoppt.")

    async def run_task(self, task_description: str, use_persistent_session: str = None) -> str:
        """
        Führt einen Task mithilfe des AgentBrain in einem Browser-Kontext aus.
        """
        if use_persistent_session:
            context = await self.browser_manager.get_persistent_context(use_persistent_session)
        else:
            context = await self.browser_manager.get_ephemeral_context()
            
        page = await context.new_page()
        brain = AgentBrain()
        
        try:
            result = await brain.run(task_description, page)
            return result
        except Exception as e:
            logger.error(f"Fehler bei Ausführung von Task '{task_description[:30]}...': {e}")
            return f"Fehler aufgetreten: {str(e)}"
        finally:
            await page.close()
            if not use_persistent_session:
                await context.close()
            await brain.close()