@@ -104,12 +104,21 @@ export namespace SessionPrompt {
104104 const summary = yield * SessionSummary . Service
105105 const sys = yield * SystemPrompt . Service
106106 const llm = yield * LLM . Service
107- const ctx = yield * Effect . context ( )
108-
109- const run = {
110- promise : < A , E > ( effect : Effect . Effect < A , E > ) => Effect . runPromiseWith ( ctx ) ( effect ) ,
111- fork : < A , E > ( effect : Effect . Effect < A , E > ) => Effect . runForkWith ( ctx ) ( effect ) ,
112- }
107+ const runner = Effect . fn ( "SessionPrompt.runner" ) ( function * ( ) {
108+ const ctx = yield * Effect . context ( )
109+ return {
110+ promise : < A , E > ( effect : Effect . Effect < A , E > ) => Effect . runPromiseWith ( ctx ) ( effect ) ,
111+ fork : < A , E > ( effect : Effect . Effect < A , E > ) => Effect . runForkWith ( ctx ) ( effect ) ,
112+ }
113+ } )
114+ const ops = Effect . fn ( "SessionPrompt.ops" ) ( function * ( ) {
115+ const run = yield * runner ( )
116+ return {
117+ cancel : ( sessionID : SessionID ) => run . fork ( cancel ( sessionID ) ) ,
118+ resolvePromptParts : ( template : string ) => resolvePromptParts ( template ) ,
119+ prompt : ( input : PromptInput ) => prompt ( input ) ,
120+ } satisfies TaskPromptOps
121+ } )
113122
114123 const cancel = Effect . fn ( "SessionPrompt.cancel" ) ( function * ( sessionID : SessionID ) {
115124 yield * elog . info ( "cancel" , { sessionID } )
@@ -359,6 +368,8 @@ NOTE: At any point in time through this workflow you should feel free to ask the
359368 } ) {
360369 using _ = log . time ( "resolveTools" )
361370 const tools : Record < string , AITool > = { }
371+ const run = yield * runner ( )
372+ const promptOps = yield * ops ( )
362373
363374 const context = ( args : any , options : ToolExecutionOptions ) : Tool . Context => ( {
364375 sessionID : input . session . id ,
@@ -528,6 +539,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
528539 } ) {
529540 const { task, model, lastUser, sessionID, session, msgs } = input
530541 const ctx = yield * InstanceState . context
542+ const promptOps = yield * ops ( )
531543 const { task : taskTool } = yield * registry . named ( )
532544 const taskModel = task . model ? yield * getModel ( task . model . providerID , task . model . modelID , sessionID ) : model
533545 const assistantMessage : MessageV2 . Assistant = yield * sessions . updateMessage ( {
@@ -712,6 +724,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
712724
713725 const shellImpl = Effect . fn ( "SessionPrompt.shellImpl" ) ( function * ( input : ShellInput ) {
714726 const ctx = yield * InstanceState . context
727+ const run = yield * runner ( )
715728 const session = yield * sessions . get ( input . sessionID )
716729 if ( session . revert ) {
717730 yield * revert . cleanup ( session )
@@ -1659,12 +1672,6 @@ NOTE: At any point in time through this workflow you should feel free to ask the
16591672 return result
16601673 } )
16611674
1662- const promptOps : TaskPromptOps = {
1663- cancel : ( sessionID ) => run . fork ( cancel ( sessionID ) ) ,
1664- resolvePromptParts : ( template ) => resolvePromptParts ( template ) ,
1665- prompt : ( input ) => prompt ( input ) ,
1666- }
1667-
16681675 return Service . of ( {
16691676 cancel,
16701677 prompt,
0 commit comments