@@ -6,10 +6,11 @@ import { MessageV2 } from "../session/message-v2"
66import { Agent } from "../agent/agent"
77import type { SessionPrompt } from "../session/prompt"
88import { Config } from "@/config/config"
9- import { Effect , Schema } from "effect"
9+ import { Effect , Exit , Schema } from "effect"
10+ import { EffectBridge } from "@/effect/bridge"
1011
1112export interface TaskPromptOps {
12- cancel ( sessionID : SessionID ) : void
13+ cancel ( sessionID : SessionID ) : Effect . Effect < void >
1314 resolvePromptParts ( template : string ) : Effect . Effect < SessionPrompt . PromptInput [ "parts" ] >
1415 prompt ( input : SessionPrompt . PromptInput ) : Effect . Effect < MessageV2 . WithParts >
1516}
@@ -118,16 +119,18 @@ export const TaskTool = Tool.define(
118119
119120 const ops = ctx . extra ?. promptOps as TaskPromptOps
120121 if ( ! ops ) return yield * Effect . fail ( new Error ( "TaskTool requires promptOps in ctx.extra" ) )
122+ const runCancel = yield * EffectBridge . make ( )
121123
122124 const messageID = MessageID . ascending ( )
125+ const cancel = ops . cancel ( nextSession . id )
123126
124- function cancel ( ) {
125- ops . cancel ( nextSession . id )
127+ function onAbort ( ) {
128+ runCancel . fork ( cancel )
126129 }
127130
128131 return yield * Effect . acquireUseRelease (
129132 Effect . sync ( ( ) => {
130- ctx . abort . addEventListener ( "abort" , cancel )
133+ ctx . abort . addEventListener ( "abort" , onAbort )
131134 } ) ,
132135 ( ) =>
133136 Effect . gen ( function * ( ) {
@@ -163,10 +166,16 @@ export const TaskTool = Tool.define(
163166 ] . join ( "\n" ) ,
164167 }
165168 } ) ,
166- ( ) =>
167- Effect . sync ( ( ) => {
168- ctx . abort . removeEventListener ( "abort" , cancel )
169- } ) ,
169+ ( _ , exit ) =>
170+ Effect . gen ( function * ( ) {
171+ if ( Exit . hasInterrupts ( exit ) ) yield * cancel
172+ } ) . pipe (
173+ Effect . ensuring (
174+ Effect . sync ( ( ) => {
175+ ctx . abort . removeEventListener ( "abort" , onAbort )
176+ } ) ,
177+ ) ,
178+ ) ,
170179 )
171180 } )
172181
0 commit comments