1- import { Cause , Deferred , Effect , Layer , Context } from "effect"
1+ import { Cause , Deferred , Effect , Layer , Context , Scope } from "effect"
22import * as Stream from "effect/Stream"
33import { Agent } from "@/agent/agent"
44import { Bus } from "@/bus"
@@ -89,6 +89,7 @@ export namespace SessionProcessor {
8989 | LLM . Service
9090 | Permission . Service
9191 | Plugin . Service
92+ | SessionSummary . Service
9293 | SessionStatus . Service
9394 > = Layer . effect (
9495 Service ,
@@ -101,6 +102,8 @@ export namespace SessionProcessor {
101102 const llm = yield * LLM . Service
102103 const permission = yield * Permission . Service
103104 const plugin = yield * Plugin . Service
105+ const summary = yield * SessionSummary . Service
106+ const scope = yield * Scope . Scope
104107 const status = yield * SessionStatus . Service
105108
106109 const create = Effect . fn ( "SessionProcessor.create" ) ( function * ( input : Input ) {
@@ -385,10 +388,12 @@ export namespace SessionProcessor {
385388 }
386389 ctx . snapshot = undefined
387390 }
388- SessionSummary . summarize ( {
389- sessionID : ctx . sessionID ,
390- messageID : ctx . assistantMessage . parentID ,
391- } )
391+ yield * summary
392+ . summarize ( {
393+ sessionID : ctx . sessionID ,
394+ messageID : ctx . assistantMessage . parentID ,
395+ } )
396+ . pipe ( Effect . ignore , Effect . forkIn ( scope ) )
392397 if (
393398 ! ctx . assistantMessage . summary &&
394399 isOverflow ( { cfg : yield * config . get ( ) , tokens : usage . tokens , model : ctx . model } )
@@ -603,6 +608,7 @@ export namespace SessionProcessor {
603608 Layer . provide ( LLM . defaultLayer ) ,
604609 Layer . provide ( Permission . defaultLayer ) ,
605610 Layer . provide ( Plugin . defaultLayer ) ,
611+ Layer . provide ( SessionSummary . defaultLayer ) ,
606612 Layer . provide ( SessionStatus . defaultLayer ) ,
607613 Layer . provide ( Bus . layer ) ,
608614 Layer . provide ( Config . defaultLayer ) ,
0 commit comments