@@ -11,14 +11,16 @@ export namespace SessionBackground {
1111
1212 const state = Instance . state (
1313 ( ) => {
14- const finished = new Map < string , Session . BackgroundTask [ ] > ( )
14+ const wakeable = new Set < string > ( )
1515 const unsubscribes = [
1616 Bus . subscribe ( Session . Event . BackgroundTaskCompleted , async ( event ) => {
1717 const sessionID = event . properties . sessionID
1818 const task = event . properties . task
1919
20- await addFinishedTask ( sessionID , task ) . catch ( ( err ) => {
21- log . error ( "failed to stage background task" , { sessionID, error : err } )
20+ await updateTaskMessage ( sessionID , task ) . then ( ( ) => {
21+ state ( ) . wakeable . add ( sessionID )
22+ } ) . catch ( ( err ) => {
23+ log . error ( "failed to update background task session message" , { sessionID, error : err } )
2224 } )
2325 await wake ( sessionID ) . catch ( ( err ) => {
2426 log . error ( "failed to wake for finished tasks" , { sessionID, error : err } )
@@ -32,7 +34,7 @@ export namespace SessionBackground {
3234 } )
3335 } ) ,
3436 ]
35- return { finished , unsubscribes }
37+ return { wakeable , unsubscribes }
3638 } ,
3739 async ( current ) => {
3840 for ( const unsubscribe of current . unsubscribes ) {
@@ -55,8 +57,7 @@ export namespace SessionBackground {
5557 }
5658
5759 const s = state ( )
58- const tasks = s . finished . get ( sessionID )
59- if ( ! tasks || tasks . length === 0 ) {
60+ if ( ! s . wakeable . has ( sessionID ) ) {
6061 return
6162 }
6263
@@ -65,20 +66,11 @@ export namespace SessionBackground {
6566 return
6667 }
6768
68- s . finished . delete ( sessionID )
69+ s . wakeable . delete ( sessionID )
6970 SessionStatus . set ( sessionID , { type : "busy" } )
7071 await SessionPrompt . loop ( { sessionID } )
7172 }
7273
73- async function addFinishedTask ( sessionID : string , task : Session . BackgroundTask ) {
74- await updateTaskMessage ( sessionID , task )
75-
76- const finished = state ( ) . finished
77- const tasks = finished . get ( sessionID ) ?? [ ]
78- finished . set ( sessionID , tasks )
79- tasks . push ( task )
80- }
81-
8274 async function updateTaskMessage ( sessionID : string , task : Session . BackgroundTask ) {
8375 const msgID = Identifier . ascending ( "message" )
8476 const output = [ `Session ID: ${ task . sessionID } ` , "" , "<task_result>" , task . result , "</task_result>" ] . join ( "\n" )
0 commit comments