@@ -106,16 +106,11 @@ const updateLLMConfig = (newConfig: Omit<AIModelConfig, 'provider' | 'providerIm
106106}
107107
108108const removeLoading = ( messages : ChatMessage [ ] , name ?: string ) => {
109- const lastMessage = messages . at ( - 1 )
110- if ( name === 'latest' && lastMessage . renderContent ?. at ( - 1 ) ?. type === 'loading' ) {
111- lastMessage . renderContent . pop ( )
112- return
113- }
114- const index = lastMessage . renderContent ?. findIndex (
115- ( item ) => item . type === 'loading' && ( name ? item . content === name : true )
116- )
109+ const renderContent = messages . at ( - 1 ) ?. renderContent
110+ if ( ! renderContent || ! renderContent . length ) return
111+ const index = renderContent . findLastIndex ( ( item ) => item . type === 'loading' && ( name ? item . content === name : true ) )
117112 if ( index !== - 1 ) {
118- lastMessage . renderContent ?. splice ( index , 1 )
113+ renderContent ?. splice ( index , 1 )
119114 }
120115}
121116
@@ -136,7 +131,7 @@ const events: UseMessageOptions['events'] = {
136131 }
137132 const lastMessage = messages . value . at ( - 1 )
138133 if ( choice . delta . reasoning_content || choice . delta . content || choice . delta . tool_calls ?. length ) {
139- removeLoading ( messages . value , 'latest' )
134+ removeLoading ( messages . value )
140135 }
141136 handleDeltaReasoning ( choice , lastMessage ) // eslint-disable-line
142137 handleDeltaContent ( choice , lastMessage ) // eslint-disable-line
@@ -326,7 +321,7 @@ const handleToolCall = async (
326321 data . choices [ 0 ] . delta . content ||
327322 data . choices [ 0 ] . delta . tool_calls ?. length
328323 ) {
329- removeLoading ( messages , 'latest' )
324+ removeLoading ( messages )
330325 }
331326 if ( data . choices [ 0 ] . delta . reasoning_content ) {
332327 handleDeltaReasoning ( data . choices [ 0 ] , currentMessage )
@@ -346,7 +341,7 @@ const handleToolCall = async (
346341 getMessageManager ( ) . messageState . status = STATUS . ERROR
347342 } ,
348343 onDone : async ( ) => {
349- removeLoading ( messages , 'latest' )
344+ removeLoading ( messages )
350345 const toolCalls = messages . at ( - 1 ) ! . tool_calls
351346 if ( toolCalls ?. length ) {
352347 await handleToolCall ( toolCalls , messages , toolMessages )
@@ -382,7 +377,7 @@ export default function () {
382377 chatAbortController ?. abort ( )
383378 messageManager . abortRequest ( )
384379 messageManager . messageState . status = STATUS . ABORTED
385- removeLoading ( messageManager . messages . value , 'latest' )
380+ removeLoading ( messageManager . messages . value )
386381 } ,
387382 ...rest ,
388383 switchConversation : ( conversationId : string ) => {
@@ -392,12 +387,21 @@ export default function () {
392387 rest . switchConversation ( conversationId )
393388 // 切换会话后跟随切换对话模式
394389 if ( conversation . metadata ?. chatMode ) {
395- robotSettingState . chatMode = conversation . metadata . chatMode as string
390+ robotSettingState . chatMode = robotSettingState . chatMode as string
396391 } else {
397392 robotSettingState . chatMode = CHAT_MODE . Agent
398393 rest . updateMetadata ( conversationId , { chatMode : CHAT_MODE . Agent } )
399394 rest . saveConversations ( )
400395 }
396+ if ( robotSettingState . chatMode === CHAT_MODE . Agent ) {
397+ messageManager . messages . value . at ( - 1 ) ?. renderContent ?. forEach ( ( item ) => {
398+ if ( item . type === 'loading' ) {
399+ item . status = 'failed'
400+ }
401+ } )
402+ } else {
403+ removeLoading ( messageManager . messages . value )
404+ }
401405 } ,
402406 createConversation : ( title ?: string ) => {
403407 createConversation ( title , { chatMode : robotSettingState . chatMode } )
0 commit comments