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, workflowMode: str = "Actionplan") -> ChatWorkflow: """ Starts a new chat or continues an existing one, then launches processing asynchronously. Args: interfaceChat: Chat interface instance currentUser: Current user userInput: User input request workflowId: Optional workflow ID to continue existing workflow workflowMode: "Actionplan" for traditional task planning, "React" for iterative react-style processing Example usage for React mode: workflow = await chatStart(interfaceChat, currentUser, userInput, workflowMode="React") """ try: from modules.workflows.workflowManager import WorkflowManager from modules.services import getInterface as getServices services = getServices(currentUser, None) workflowManager = WorkflowManager(services) workflow = await workflowManager.workflowStart(userInput, workflowId, workflowMode) return workflow 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 from modules.services import getInterface as getServices 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