11use futures:: StreamExt ;
22use node_bridge:: prelude:: * ;
3- use uuid:: Uuid ;
43use wasm_bindgen:: JsValue ;
54
65use crate :: {
76 conversation:: {
8- make_conversation_request,
97 models:: { user_message:: UserMessage , BotMessage , MessageType , RequestBody , UserRequest } ,
8+ send_conversation_request,
109 } ,
1110 GenerateInput ,
1211} ;
1312
1413#[ derive( Debug ) ]
1514pub struct Session {
1615 request_body : Option < RequestBody > ,
17- conversation_id : String ,
16+ message_counter : usize ,
1817}
1918
2019impl Session {
@@ -34,42 +33,35 @@ impl Session {
3433 }
3534
3635 fn push_bot_message ( & mut self , message : String ) {
37- let bot_message = BotMessage :: new (
38- self . conversation_id . clone ( ) ,
39- MessageType :: Markdown ,
40- message,
41- "<|END_message|>" . to_owned ( ) ,
42- self . request_body
43- . as_ref ( )
44- . map ( |r| r. user_request . current_root_path . clone ( ) )
45- . unwrap_or_default ( ) ,
46- true ,
47- ) ;
36+ let bot_message = BotMessage :: new ( message, self . message_counter ) ;
4837 self . request_body
4938 . as_mut ( )
5039 . map ( |r| r. bot_messages . push ( bot_message) ) ;
40+ self . message_counter += 1 ;
5141 }
5242
53- fn push_user_message ( & mut self , input : & GenerateInput ) {
54- let user_message =
55- UserMessage :: new_with_input ( input, & self . conversation_id , MessageType :: Freeform ) ;
43+ fn push_user_message ( & mut self , message : String ) {
44+ let user_message = UserMessage :: new ( message, self . message_counter ) ;
5645 self . request_body
5746 . as_mut ( )
5847 . map ( |r| r. user_messages . push ( user_message) ) ;
48+ self . message_counter += 1 ;
5949 }
6050}
6151
6252impl Session {
6353 pub fn new ( ) -> Self {
6454 Self {
6555 request_body : None ,
66- conversation_id : Uuid :: new_v4 ( ) . to_string ( ) ,
56+ message_counter : 0 ,
6757 }
6858 }
6959
7060 pub async fn send_message ( & mut self , input : & GenerateInput ) -> Result < ( ) , JsValue > {
7161 let request_body = self . body_with_input ( input) ;
72- let mut state = make_conversation_request ( "/conversation" , request_body) . await ?;
62+ #[ cfg( debug_assertions) ]
63+ console:: log_str ( & serde_json:: to_string ( & request_body) . unwrap ( ) ) ;
64+ let mut state = send_conversation_request ( "/conversation" , request_body) . await ?;
7365
7466 let mut message: String = "" . to_owned ( ) ;
7567
@@ -87,7 +79,7 @@ impl Session {
8779
8880 result_stream. end ( ) ;
8981
90- self . push_user_message ( input) ;
82+ self . push_user_message ( input. prompt ( ) ) ;
9183 self . push_bot_message ( message) ;
9284
9385 Ok ( ( ) )
0 commit comments