import logging import asyncio from typing import Optional from modules.interfaces.interfaceAppModel import User from modules.interfaces.interfaceChatModel import ChatWorkflow, UserInputRequest from modules.shared.timezoneUtils import get_utc_timestamp logger = logging.getLogger(__name__) async def chatStart(interfaceChat, currentUser: User, userInput: UserInputRequest, workflowId: Optional[str] = None) -> ChatWorkflow: """Starts a new chat or continues an existing one, then launches processing asynchronously.""" try: from modules.workflows.workflowManager import WorkflowManager workflowManager = WorkflowManager(interfaceChat, currentUser) return await workflowManager.workflowStart(userInput, workflowId) except Exception as e: logger.error(f"Error starting chat: {str(e)}") raise async def chatStop(interfaceChat, currentUser: User, workflowId: str) -> ChatWorkflow: """Stops a running chat.""" try: from modules.workflows.workflowManager import WorkflowManager workflowManager = WorkflowManager(interfaceChat, currentUser) return await workflowManager.workflowStop(workflowId) except Exception as e: logger.error(f"Error stopping chat: {str(e)}") raise