@@ -582,6 +582,52 @@ describe("TriggerChatTransport", function () {
582582 expect ( errors [ 0 ] ?. error . message ) . toBe ( "cleanup delete failed" ) ;
583583 } ) ;
584584
585+ it ( "retries inactive reconnect cleanup on subsequent reconnect attempts" , async function ( ) {
586+ const errors : TriggerChatTransportError [ ] = [ ] ;
587+ const runStore = new FailingCleanupDeleteRunStore ( 1 ) ;
588+ runStore . set ( {
589+ chatId : "chat-inactive-delete-retry" ,
590+ runId : "run_inactive_delete_retry" ,
591+ publicAccessToken : "pk_inactive_delete_retry" ,
592+ streamKey : "chat-stream" ,
593+ lastEventId : "10-0" ,
594+ isActive : false ,
595+ } ) ;
596+
597+ const transport = new TriggerChatTransport ( {
598+ task : "chat-task" ,
599+ stream : "chat-stream" ,
600+ accessToken : "pk_trigger" ,
601+ runStore,
602+ onError : function onError ( error ) {
603+ errors . push ( error ) ;
604+ } ,
605+ } ) ;
606+
607+ const firstReconnect = await transport . reconnectToStream ( {
608+ chatId : "chat-inactive-delete-retry" ,
609+ } ) ;
610+
611+ expect ( firstReconnect ) . toBeNull ( ) ;
612+ expect ( errors ) . toHaveLength ( 1 ) ;
613+ expect ( errors [ 0 ] ) . toMatchObject ( {
614+ phase : "reconnect" ,
615+ chatId : "chat-inactive-delete-retry" ,
616+ runId : "run_inactive_delete_retry" ,
617+ } ) ;
618+ expect ( runStore . get ( "chat-inactive-delete-retry" ) ) . toMatchObject ( {
619+ isActive : false ,
620+ } ) ;
621+
622+ const secondReconnect = await transport . reconnectToStream ( {
623+ chatId : "chat-inactive-delete-retry" ,
624+ } ) ;
625+
626+ expect ( secondReconnect ) . toBeNull ( ) ;
627+ expect ( errors ) . toHaveLength ( 1 ) ;
628+ expect ( runStore . get ( "chat-inactive-delete-retry" ) ) . toBeUndefined ( ) ;
629+ } ) ;
630+
585631 it ( "returns null when inactive reconnect cleanup delete and onError both fail" , async function ( ) {
586632 const runStore = new FailingCleanupDeleteRunStore ( 1 ) ;
587633 runStore . set ( {
0 commit comments