@@ -2787,6 +2787,7 @@ describe("TriggerChatTransport", function () {
27872787 it ( "preserves reconnect failures when cleanup run-store delete throws" , async function ( ) {
27882788 const errors : TriggerChatTransportError [ ] = [ ] ;
27892789 const runStore = new FailingCleanupDeleteRunStore ( 1 ) ;
2790+ let fetchCalls = 0 ;
27902791 runStore . set ( {
27912792 chatId : "chat-reconnect-cleanup-delete-failure" ,
27922793 runId : "run_reconnect_cleanup_delete_failure" ,
@@ -2807,6 +2808,7 @@ describe("TriggerChatTransport", function () {
28072808 } ) ;
28082809
28092810 ( transport as any ) . fetchRunStream = async function fetchRunStream ( ) {
2811+ fetchCalls += 1 ;
28102812 throw new Error ( "reconnect root cause" ) ;
28112813 } ;
28122814
@@ -2822,6 +2824,20 @@ describe("TriggerChatTransport", function () {
28222824 runId : "run_reconnect_cleanup_delete_failure" ,
28232825 } ) ;
28242826 expect ( errors [ 0 ] ?. error . message ) . toBe ( "reconnect root cause" ) ;
2827+ expect ( fetchCalls ) . toBe ( 1 ) ;
2828+ expect ( runStore . get ( "chat-reconnect-cleanup-delete-failure" ) ) . toMatchObject ( {
2829+ isActive : false ,
2830+ lastEventId : "100-0" ,
2831+ } ) ;
2832+
2833+ const secondReconnect = await transport . reconnectToStream ( {
2834+ chatId : "chat-reconnect-cleanup-delete-failure" ,
2835+ } ) ;
2836+
2837+ expect ( secondReconnect ) . toBeNull ( ) ;
2838+ expect ( fetchCalls ) . toBe ( 1 ) ;
2839+ expect ( errors ) . toHaveLength ( 1 ) ;
2840+ expect ( runStore . get ( "chat-reconnect-cleanup-delete-failure" ) ) . toBeUndefined ( ) ;
28252841 } ) ;
28262842
28272843 it ( "attempts both reconnect cleanup steps when set and delete both throw" , async function ( ) {
0 commit comments