@@ -927,6 +927,10 @@ describe('sanitizeMessagesForChatName', () => {
927927 expect ( result ) . toEqual ( [
928928 { role : 'user' , content : 'hello' } ,
929929 { role : 'assistant' , content : 'hi' } ,
930+ {
931+ role : 'user' ,
932+ content : 'Generate a chat name based on the conversation above.' ,
933+ } ,
930934 ] ) ;
931935 } ) ;
932936
@@ -937,7 +941,13 @@ describe('sanitizeMessagesForChatName', () => {
937941 ] ;
938942
939943 const result = sanitizeMessagesForChatName ( messages ) ;
940- expect ( result ) . toEqual ( [ { role : 'assistant' , content : 'answer' } ] ) ;
944+ expect ( result ) . toEqual ( [
945+ { role : 'assistant' , content : 'answer' } ,
946+ {
947+ role : 'user' ,
948+ content : 'Generate a chat name based on the conversation above.' ,
949+ } ,
950+ ] ) ;
941951 } ) ;
942952
943953 it ( 'merges multiple text parts with newlines and trims overall' , ( ) => {
@@ -970,6 +980,10 @@ describe('sanitizeMessagesForChatName', () => {
970980 const result = sanitizeMessagesForChatName ( messages ) ;
971981 expect ( result ) . toEqual ( [
972982 { role : 'assistant' , content : 'Only this is kept' } ,
983+ {
984+ role : 'user' ,
985+ content : 'Generate a chat name based on the conversation above.' ,
986+ } ,
973987 ] ) ;
974988 } ) ;
975989
@@ -983,4 +997,67 @@ describe('sanitizeMessagesForChatName', () => {
983997 const result = sanitizeMessagesForChatName ( messages ) ;
984998 expect ( result ) . toEqual ( [ ] ) ;
985999 } ) ;
1000+
1001+ it ( 'appends user prompt when last message is from assistant' , ( ) => {
1002+ const messages : ModelMessage [ ] = [
1003+ { role : 'user' , content : 'What is the weather?' } ,
1004+ { role : 'assistant' , content : 'Let me check that for you.' } ,
1005+ ] ;
1006+
1007+ const result = sanitizeMessagesForChatName ( messages ) ;
1008+ expect ( result ) . toEqual ( [
1009+ { role : 'user' , content : 'What is the weather?' } ,
1010+ { role : 'assistant' , content : 'Let me check that for you.' } ,
1011+ {
1012+ role : 'user' ,
1013+ content : 'Generate a chat name based on the conversation above.' ,
1014+ } ,
1015+ ] ) ;
1016+ } ) ;
1017+
1018+ it ( 'does not append user prompt when last message is from user' , ( ) => {
1019+ const messages : ModelMessage [ ] = [
1020+ { role : 'assistant' , content : 'How can I help you?' } ,
1021+ { role : 'user' , content : 'Tell me a joke' } ,
1022+ ] ;
1023+
1024+ const result = sanitizeMessagesForChatName ( messages ) ;
1025+ expect ( result ) . toEqual ( [
1026+ { role : 'assistant' , content : 'How can I help you?' } ,
1027+ { role : 'user' , content : 'Tell me a joke' } ,
1028+ ] ) ;
1029+ } ) ;
1030+
1031+ it ( 'does not append user prompt when result is empty' , ( ) => {
1032+ const messages : ModelMessage [ ] = [
1033+ { role : 'system' , content : 'system message' } ,
1034+ ] ;
1035+
1036+ const result = sanitizeMessagesForChatName ( messages ) ;
1037+ expect ( result ) . toEqual ( [ ] ) ;
1038+ } ) ;
1039+
1040+ it ( 'appends user prompt after trimming and filtering' , ( ) => {
1041+ const messages : ModelMessage [ ] = [
1042+ { role : 'user' , content : ' hello ' } ,
1043+ { role : 'system' , content : 'system' } ,
1044+ {
1045+ role : 'assistant' ,
1046+ content : [
1047+ { type : 'text' , text : 'response' } as any ,
1048+ { type : 'tool-call' , toolName : 'search' } as any ,
1049+ ] ,
1050+ } ,
1051+ ] ;
1052+
1053+ const result = sanitizeMessagesForChatName ( messages ) ;
1054+ expect ( result ) . toEqual ( [
1055+ { role : 'user' , content : 'hello' } ,
1056+ { role : 'assistant' , content : 'response' } ,
1057+ {
1058+ role : 'user' ,
1059+ content : 'Generate a chat name based on the conversation above.' ,
1060+ } ,
1061+ ] ) ;
1062+ } ) ;
9861063} ) ;
0 commit comments