55
66from openhands .core .logger import openhands_logger as logger
77from openhands .core .schema .action import ActionType
8+ from openhands .core .schema .research import ResearchMode
89from openhands .events .action .agent import RecallAction
910from openhands .events .action .empty import NullAction
1011from openhands .events .async_event_store_wrapper import AsyncEventStoreWrapper
3233from openhands .storage .data_models .conversation_status import ConversationStatus
3334
3435conversation_router = APIRouter (prefix = '/conversations' )
36+ chat_router = APIRouter (prefix = '/chat_researchs' )
37+ deep_research_router = APIRouter (prefix = '/deep_researchs' )
3538
3639
37- class CreatNewConversationIntegrationRequest (BaseModel ):
40+ class CreateNewConversationIntegrationRequest (BaseModel ):
3841 initial_user_msg : str | None = None
39- research_mode : str | None = None
42+ research_mode : ResearchMode | None = None
4043 space_id : int | None = None
4144 space_section_id : int | None = None
4245 thread_follow_up : int | None = None
4346 followup_discover_id : str | None = None
4447 mcp_disable : dict [str , bool ] | None = None
4548 system_prompt : str | None = None
46- image_urls : list [str ] | None = None
4749
4850
49- @conversation_router .post ('' )
51+ class CreateChatConversationIntegrationRequest (BaseModel ):
52+ initial_user_msg : str | None = None
53+ system_prompt : str | None = None
54+
55+
56+ class CreateDeepResearchConversationIntegrationRequest (BaseModel ):
57+ initial_user_msg : str | None = None
58+ mcp_disable : dict [str , bool ] | None = None
59+ system_prompt : str | None = None
60+
61+
62+ @conversation_router .post ('' , description = 'Create new conversation.' )
5063async def integration_new_conversation (
51- request : Request , data : CreatNewConversationIntegrationRequest
64+ request : Request , data : CreateNewConversationIntegrationRequest
5265):
5366 new_conversation_data = InitSessionRequest (** data .model_dump ())
5467 new_conversation_result = await new_conversation (request , new_conversation_data )
@@ -69,6 +82,30 @@ async def integration_new_conversation(
6982 return new_conversation_result
7083
7184
85+ @chat_router .post ('' , description = 'Create new conversation in chat mode.' )
86+ async def integration_new_chat_conversation (
87+ request : Request , data : CreateChatConversationIntegrationRequest
88+ ):
89+ new_conversation_data = InitSessionRequest (
90+ ** data .model_dump (),
91+ research_mode = ResearchMode .CHAT .value ,
92+ )
93+ return await new_conversation (request , new_conversation_data )
94+
95+
96+ @deep_research_router .post (
97+ '' , description = 'Create new conversation in deep research mode.'
98+ )
99+ async def integration_new_deep_research_conversation (
100+ request : Request , data : CreateDeepResearchConversationIntegrationRequest
101+ ):
102+ new_conversation_data = InitSessionRequest (
103+ ** data .model_dump (),
104+ research_mode = ResearchMode .DEEP_RESEARCH .value ,
105+ )
106+ return await new_conversation (request , new_conversation_data )
107+
108+
72109@conversation_router .get ('/{conversation_id}' )
73110async def integration_get_conversation (
74111 conversation_id : str , request : Request
0 commit comments