@@ -81,15 +81,20 @@ export const useStream = ({ designSessionId, initialMessages }: Props) => {
81
81
const abortRef = useRef < AbortController | null > ( null )
82
82
const retryCountRef = useRef ( 0 )
83
83
84
- const finalizeStream = useCallback ( ( sessionId : string ) => {
84
+ const completeWorkflow = useCallback ( ( sessionId : string ) => {
85
85
setIsStreaming ( false )
86
86
abortRef . current = null
87
87
retryCountRef . current = 0
88
-
89
- // Clear workflow in progress flag
90
88
clearWorkflowInProgress ( sessionId )
91
89
} , [ ] )
92
90
91
+ const abortWorkflow = useCallback ( ( ) => {
92
+ setIsStreaming ( false )
93
+ abortRef . current = null
94
+ retryCountRef . current = 0
95
+ // Do NOT clear workflow flag - allow reconnection
96
+ } , [ ] )
97
+
93
98
const stop = useCallback ( ( ) => {
94
99
abortRef . current ?. abort ( )
95
100
abortRef . current = null
@@ -180,7 +185,7 @@ export const useStream = ({ designSessionId, initialMessages }: Props) => {
180
185
} )
181
186
182
187
if ( ! res . body ) {
183
- finalizeStream ( params . designSessionId )
188
+ abortWorkflow ( )
184
189
return err ( {
185
190
type : 'network' ,
186
191
message : ERROR_MESSAGES . FETCH_FAILED ,
@@ -192,7 +197,7 @@ export const useStream = ({ designSessionId, initialMessages }: Props) => {
192
197
193
198
if ( ! endEventReceived ) {
194
199
if ( controller . signal . aborted ) {
195
- finalizeStream ( params . designSessionId )
200
+ abortWorkflow ( )
196
201
return err ( {
197
202
type : 'abort' ,
198
203
message : 'Request was aborted' ,
@@ -204,10 +209,10 @@ export const useStream = ({ designSessionId, initialMessages }: Props) => {
204
209
return ok ( 'shouldRetry' )
205
210
}
206
211
207
- finalizeStream ( params . designSessionId )
212
+ completeWorkflow ( params . designSessionId )
208
213
return ok ( 'complete' )
209
214
} catch ( unknownError ) {
210
- finalizeStream ( params . designSessionId )
215
+ abortWorkflow ( )
211
216
212
217
if (
213
218
unknownError instanceof Error &&
@@ -225,7 +230,7 @@ export const useStream = ({ designSessionId, initialMessages }: Props) => {
225
230
} )
226
231
}
227
232
} ,
228
- [ finalizeStream , processStreamEvents ] ,
233
+ [ completeWorkflow , abortWorkflow , processStreamEvents ] ,
229
234
)
230
235
231
236
const replay = useCallback (
@@ -245,14 +250,14 @@ export const useStream = ({ designSessionId, initialMessages }: Props) => {
245
250
}
246
251
247
252
const timeoutMessage = ERROR_MESSAGES . CONNECTION_TIMEOUT
248
- finalizeStream ( params . designSessionId )
253
+ abortWorkflow ( )
249
254
setError ( timeoutMessage )
250
255
return err ( {
251
256
type : 'timeout' ,
252
257
message : timeoutMessage ,
253
258
} )
254
259
} ,
255
- [ finalizeStream , runStreamAttempt ] ,
260
+ [ abortWorkflow , runStreamAttempt ] ,
256
261
)
257
262
258
263
const start = useCallback (
0 commit comments