@@ -894,9 +894,40 @@ describe("Task persistence", () => {
894894 }
895895 } )
896896
897+ it ( "does not wait or flush dependent tool results after abort" , async ( ) => {
898+ const task = new Task ( {
899+ provider : mockProvider ,
900+ apiConfiguration : mockApiConfig ,
901+ task : "test task" ,
902+ startTask : false ,
903+ } )
904+ task . abort = true
905+ task . userMessageContent = [ { type : "tool_result" , tool_use_id : "tool-1" , content : "done" } ]
906+ const waitForPersistence = vi . spyOn ( task , "waitForCurrentAssistantMessagePersistence" )
907+
908+ await expect ( task . flushPendingToolResultsToHistory ( ) ) . resolves . toBe ( false )
909+ expect ( waitForPersistence ) . not . toHaveBeenCalled ( )
910+ expect ( mockSaveApiMessages ) . not . toHaveBeenCalled ( )
911+ } )
912+
913+ it ( "does not flush dependent tool results when the persistence barrier is cancelled" , async ( ) => {
914+ const task = new Task ( {
915+ provider : mockProvider ,
916+ apiConfiguration : mockApiConfig ,
917+ task : "test task" ,
918+ startTask : false ,
919+ } )
920+ task . userMessageContent = [ { type : "tool_result" , tool_use_id : "tool-1" , content : "done" } ]
921+ vi . spyOn ( task , "waitForCurrentAssistantMessagePersistence" ) . mockResolvedValue ( false )
922+
923+ await expect ( task . flushPendingToolResultsToHistory ( ) ) . resolves . toBe ( false )
924+ expect ( mockSaveApiMessages ) . not . toHaveBeenCalled ( )
925+ } )
926+
897927 it ( "does not flush dependent tool results when assistant persistence retries are exhausted" , async ( ) => {
898928 vi . useFakeTimers ( )
899929 mockSaveApiMessages . mockRejectedValue ( new Error ( "assistant write failed" ) )
930+ const consoleWarn = vi . spyOn ( console , "warn" ) . mockImplementation ( ( ) => undefined )
900931 const task = new Task ( {
901932 provider : mockProvider ,
902933 apiConfiguration : mockApiConfig ,
@@ -918,7 +949,12 @@ describe("Task persistence", () => {
918949 expect ( mockSaveApiMessages ) . toHaveBeenCalledTimes ( 4 )
919950 expect ( task . assistantMessageSavedToHistory ) . toBe ( false )
920951 expect ( task . userMessageContent ) . toHaveLength ( 1 )
952+ expect ( consoleWarn ) . toHaveBeenCalledWith (
953+ expect . stringContaining ( "failed to persist assistant message" ) ,
954+ expect . any ( Error ) ,
955+ )
921956 } finally {
957+ consoleWarn . mockRestore ( )
922958 mockSaveApiMessages . mockResolvedValue ( undefined )
923959 vi . useRealTimers ( )
924960 }
0 commit comments