@@ -16,6 +16,7 @@ import { SessionSummary } from "@/session/summary"
1616import { Todo } from "@/session/todo"
1717import { MessageID , PartID , SessionID } from "@/session/schema"
1818import { NamedError } from "@opencode-ai/core/util/error"
19+ import { attach } from "@/effect/run-service"
1920import { Cause , Effect , Option , Schema , Scope } from "effect"
2021import * as Stream from "effect/Stream"
2122import { HttpServerRequest , HttpServerResponse } from "effect/unstable/http"
@@ -311,18 +312,19 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
311312 payload : typeof PromptPayload . Type
312313 } ) {
313314 yield * requireSession ( ctx . params . sessionID )
314- yield * promptSvc . prompt ( { ...ctx . payload , sessionID : ctx . params . sessionID } ) . pipe (
315- Effect . catchCause ( ( cause ) =>
316- Effect . gen ( function * ( ) {
317- yield * Effect . logError ( "prompt_async failed" , { sessionID : ctx . params . sessionID , cause } )
318- yield * events . publish ( Session . Event . Error , {
319- sessionID : ctx . params . sessionID ,
320- error : new NamedError . Unknown ( { message : Cause . pretty ( cause ) } ) . toObject ( ) ,
321- } )
322- } ) ,
315+ yield * attach (
316+ promptSvc . prompt ( { ...ctx . payload , sessionID : ctx . params . sessionID } ) . pipe (
317+ Effect . catchCause ( ( cause ) =>
318+ Effect . gen ( function * ( ) {
319+ yield * Effect . logError ( "prompt_async failed" , { sessionID : ctx . params . sessionID , cause } )
320+ yield * events . publish ( Session . Event . Error , {
321+ sessionID : ctx . params . sessionID ,
322+ error : new NamedError . Unknown ( { message : Cause . pretty ( cause ) } ) . toObject ( ) ,
323+ } )
324+ } ) ,
325+ ) ,
323326 ) ,
324- Effect . forkIn ( scope , { startImmediately : true } ) ,
325- )
327+ ) . pipe ( Effect . forkIn ( scope , { startImmediately : true } ) )
326328 return HttpApiSchema . NoContent . make ( )
327329 } )
328330
0 commit comments