@@ -1769,15 +1769,15 @@ describe('useChat remount send recovery', () => {
17691769 await act ( async ( ) => {
17701770 await sending
17711771 } )
1772- await waitFor ( ( ) => allQueuedMessages ( ) . some ( ( message ) => message . retryRequired === true ) )
1772+ await waitFor ( ( ) => allQueuedMessages ( ) . some ( ( message ) => message . hold === 'user' ) )
17731773 expect ( state . postBodies ) . toHaveLength ( 1 )
17741774 expect ( allQueuedMessages ( ) ) . toEqual ( [
17751775 expect . objectContaining ( { id : queued . id , content : queued . content } ) ,
17761776 ] )
17771777 expect ( getResult ( ) . error ) . toBe ( 'Previous response is still shutting down.' )
17781778 const failed = allQueuedMessages ( ) [ 0 ]
17791779 expect ( failed ) . toMatchObject ( {
1780- retryRequired : true ,
1780+ hold : 'user' ,
17811781 queuedSendHandoff : {
17821782 stopRequired : true ,
17831783 supersededStreamId : state . postBodies [ 0 ] . userMessageId ,
@@ -1966,7 +1966,7 @@ describe('useChat remount send recovery', () => {
19661966 expect ( allQueuedMessages ( ) ) . toEqual ( [
19671967 expect . objectContaining ( {
19681968 id : 'queued-correction' ,
1969- retryRequired : true ,
1969+ hold : 'user' ,
19701970 queuedSendHandoff : expect . objectContaining ( {
19711971 userMessageId : 'prepared-correction-request' ,
19721972 supersededStreamId : 'previous-response' ,
@@ -1998,7 +1998,7 @@ describe('useChat remount send recovery', () => {
19981998 useMothershipQueueStore . getState ( ) . enqueue ( 'chat-a' , {
19991999 id : 'earlier-correction' ,
20002000 content : 'inspect the second invoice instead' ,
2001- retryRequired : true ,
2001+ hold : 'user' ,
20022002 queuedSendHandoff : {
20032003 id : 'earlier-correction' ,
20042004 chatId : 'chat-a' ,
@@ -2038,7 +2038,7 @@ describe('useChat remount send recovery', () => {
20382038 expect ( state . abortBodies [ 0 ] ?. streamId ) . toBe ( newerStreamId )
20392039 expect ( state . postBodies ) . toHaveLength ( 1 )
20402040 expect ( allQueuedMessages ( ) [ 0 ] ) . toMatchObject ( {
2041- retryRequired : true ,
2041+ hold : 'user' ,
20422042 queuedSendHandoff : {
20432043 supersededStreamId : newerStreamId ,
20442044 userMessageId : 'prepared-correction' ,
@@ -2358,8 +2358,7 @@ describe('useChat remount send recovery', () => {
23582358 content : 'written while offline' ,
23592359 resumeUserMessageId : 'offline-attempt' ,
23602360 admissionUnknown : true ,
2361- retryRequired : true ,
2362- heldUntilOnline : true ,
2361+ hold : 'online' ,
23632362 } )
23642363
23652364 await act ( async ( ) => {
@@ -2375,8 +2374,7 @@ describe('useChat remount send recovery', () => {
23752374
23762375 expect ( state . postBodies ) . toHaveLength ( 1 )
23772376 const queued = useMothershipQueueStore . getState ( ) . queues [ 'chat-a' ] ?. [ 0 ]
2378- expect ( queued ) . toMatchObject ( { id : 'held-offline' , retryRequired : true } )
2379- expect ( queued ?. heldUntilOnline ) . toBeUndefined ( )
2377+ expect ( queued ) . toMatchObject ( { id : 'held-offline' , hold : 'user' } )
23802378 } )
23812379
23822380 it ( 'keeps a resumed message uneditable when its Send-now Stop does not settle' , async ( ) => {
@@ -2868,9 +2866,12 @@ describe('useChat remount send recovery', () => {
28682866 . catch ( ( ) => { } )
28692867 } )
28702868 await waitFor ( ( ) => state . postBodies . length === 2 )
2871- await act ( async ( ) => {
2872- await sleep ( 200 )
2873- } )
2869+ /** The refusal goes back to a queue; the assertions below say which one. */
2870+ await waitFor ( ( ) =>
2871+ Object . values ( useMothershipQueueStore . getState ( ) . queues ) . some ( ( queue ) =>
2872+ queue . some ( ( message ) => message . content === 'Follow-up' )
2873+ )
2874+ )
28742875
28752876 const queues = useMothershipQueueStore . getState ( ) . queues
28762877 expect ( queues [ DEDUPED_CHAT_ID ] ?. map ( ( message ) => message . content ) ) . toEqual ( [ 'Follow-up' ] )
@@ -3192,7 +3193,7 @@ describe('useChat remount send recovery', () => {
31923193
31933194 const queued = useMothershipQueueStore . getState ( ) . queues [ history . id ] ?? [ ]
31943195 expect ( queued . map ( ( message ) => message . content ) ) . toEqual ( [ 'Written while offline' ] )
3195- expect ( queued [ 0 ] . retryRequired ) . toBe ( true )
3196+ expect ( queued [ 0 ] . hold ) . toBe ( 'online' )
31963197 expect ( queued [ 0 ] . resumeUserMessageId ) . toBe ( state . postBodies [ 0 ] . userMessageId )
31973198 expect ( getResult ( ) . error ) . not . toBeNull ( )
31983199 expect ( state . postBodies ) . toHaveLength ( 1 )
@@ -3343,8 +3344,7 @@ describe('useChat remount send recovery', () => {
33433344 expect ( state . postBodies ) . toHaveLength ( 0 )
33443345 expect ( useMothershipQueueStore . getState ( ) . queues [ history . id ] ?. [ 0 ] ) . toMatchObject ( {
33453346 content : 'Never prepared' ,
3346- retryRequired : true ,
3347- heldUntilOnline : true ,
3347+ hold : 'online' ,
33483348 } )
33493349 }
33503350 )
@@ -3435,7 +3435,7 @@ describe('useChat remount send recovery', () => {
34353435
34363436 await waitFor ( ( ) => state . postBodies . length === 1 )
34373437 await waitFor (
3438- ( ) => useMothershipQueueStore . getState ( ) . queues [ history . id ] ?. [ 0 ] ?. retryRequired === true
3438+ ( ) => useMothershipQueueStore . getState ( ) . queues [ history . id ] ?. [ 0 ] ?. hold !== undefined
34393439 )
34403440
34413441 const queued = useMothershipQueueStore . getState ( ) . queues [ history . id ] ?? [ ]
@@ -3530,7 +3530,7 @@ describe('useChat remount send recovery', () => {
35303530 await act ( async ( ) => {
35313531 await first . getResult ( ) . sendMessage ( 'First message, sent offline' )
35323532 } )
3533- await waitFor ( ( ) => allQueuedMessages ( ) . some ( ( message ) => message . retryRequired === true ) )
3533+ await waitFor ( ( ) => allQueuedMessages ( ) . some ( ( message ) => message . hold !== undefined ) )
35343534 first . unmount ( )
35353535
35363536 const second = renderUseChat ( )
@@ -4307,7 +4307,7 @@ describe('useChat remount send recovery', () => {
43074307 await first . getResult ( ) . sendMessage ( 'Held while I was elsewhere' )
43084308 } )
43094309 await waitFor (
4310- ( ) => useMothershipQueueStore . getState ( ) . queues [ history . id ] ?. [ 0 ] ?. retryRequired === true
4310+ ( ) => useMothershipQueueStore . getState ( ) . queues [ history . id ] ?. [ 0 ] ?. hold !== undefined
43114311 )
43124312 first . unmount ( )
43134313
@@ -4354,7 +4354,7 @@ describe('useChat remount send recovery', () => {
43544354 id : 'withdrawn-entry' ,
43554355 content : 'check the trace for this req' ,
43564356 resumeUserMessageId : 'accepted-request' ,
4357- retryRequired : true ,
4357+ hold : 'user' ,
43584358 } )
43594359 const { getResult } = renderUseChatInChat ( 'chat-a' , {
43604360 id : 'chat-a' ,
@@ -4391,7 +4391,7 @@ describe('useChat remount send recovery', () => {
43914391 useMothershipQueueStore . getState ( ) . enqueue ( 'chat-a' , {
43924392 id : 'unsent-entry' ,
43934393 content : 'check the trace for this req' ,
4394- retryRequired : true ,
4394+ hold : 'user' ,
43954395 resumeUserMessageId : 'unsent-request' ,
43964396 } )
43974397 const { getResult } = renderUseChatInChat ( 'chat-a' , {
0 commit comments