import logging from typing import Optional from modules.datamodels.datamodelUam import User from modules.datamodels.datamodelChat import ChatWorkflow, UserInputRequest, WorkflowModeEnum from modules.workflows.workflowManager import WorkflowManager from modules.services import getInterface as getServices logger = logging.getLogger(__name__) async def chatStart(currentUser: User, userInput: UserInputRequest, workflowMode: WorkflowModeEnum, workflowId: Optional[str] = None) -> ChatWorkflow: """ Starts a new chat or continues an existing one, then launches processing asynchronously. Args: currentUser: Current user userInput: User input request workflowId: Optional workflow ID to continue existing workflow workflowMode: "Dynamic" for iterative dynamic-style processing, "Automation" for automated workflow execution Example usage for Dynamic mode: workflow = await chatStart(currentUser, userInput, workflowMode=WorkflowModeEnum.WORKFLOW_DYNAMIC) """ try: services = getServices(currentUser, None) workflowManager = WorkflowManager(services) workflow = await workflowManager.workflowStart(userInput, workflowMode, workflowId) return workflow except Exception as e: logger.error(f"Error starting chat: {str(e)}") raise async def chatStop(currentUser: User, workflowId: str) -> ChatWorkflow: """Stops a running chat.""" try: services = getServices(currentUser, None) workflowManager = WorkflowManager(services) return await workflowManager.workflowStop(workflowId) except Exception as e: logger.error(f"Error stopping chat: {str(e)}") raise