@@ -12,30 +12,45 @@ import {
1212
1313type ThreadDeletedEvent = Extract < OrchestrationEvent , { type : "thread.deleted" } > ;
1414
15+ export const logCleanupCauseUnlessInterrupted = < R , E > ( {
16+ effect,
17+ message,
18+ threadId,
19+ } : {
20+ readonly effect : Effect . Effect < void , E , R > ;
21+ readonly message : string ;
22+ readonly threadId : ThreadDeletedEvent [ "payload" ] [ "threadId" ] ;
23+ } ) : Effect . Effect < void , E , R > =>
24+ effect . pipe (
25+ Effect . catchCause ( ( cause ) => {
26+ if ( Cause . hasInterruptsOnly ( cause ) ) {
27+ return Effect . failCause ( cause ) ;
28+ }
29+ return Effect . logDebug ( message , {
30+ threadId,
31+ cause : Cause . pretty ( cause ) ,
32+ } ) ;
33+ } ) ,
34+ ) ;
35+
1536const make = Effect . gen ( function * ( ) {
1637 const orchestrationEngine = yield * OrchestrationEngineService ;
1738 const providerService = yield * ProviderService ;
1839 const terminalManager = yield * TerminalManager ;
1940
2041 const stopProviderSession = ( threadId : ThreadDeletedEvent [ "payload" ] [ "threadId" ] ) =>
21- providerService . stopSession ( { threadId } ) . pipe (
22- Effect . catchCause ( ( cause ) =>
23- Effect . logDebug ( "thread deletion cleanup skipped provider session stop" , {
24- threadId,
25- cause : Cause . pretty ( cause ) ,
26- } ) ,
27- ) ,
28- ) ;
42+ logCleanupCauseUnlessInterrupted ( {
43+ effect : providerService . stopSession ( { threadId } ) ,
44+ message : "thread deletion cleanup skipped provider session stop" ,
45+ threadId,
46+ } ) ;
2947
3048 const closeThreadTerminals = ( threadId : ThreadDeletedEvent [ "payload" ] [ "threadId" ] ) =>
31- terminalManager . close ( { threadId, deleteHistory : true } ) . pipe (
32- Effect . catchCause ( ( cause ) =>
33- Effect . logDebug ( "thread deletion cleanup skipped terminal close" , {
34- threadId,
35- cause : Cause . pretty ( cause ) ,
36- } ) ,
37- ) ,
38- ) ;
49+ logCleanupCauseUnlessInterrupted ( {
50+ effect : terminalManager . close ( { threadId, deleteHistory : true } ) ,
51+ message : "thread deletion cleanup skipped terminal close" ,
52+ threadId,
53+ } ) ;
3954
4055 const processThreadDeleted = Effect . fn ( "processThreadDeleted" ) ( function * (
4156 event : ThreadDeletedEvent ,
0 commit comments