@@ -11,7 +11,9 @@ import { Flag } from "@opencode-ai/core/flag/flag"
1111import { Auth } from "../auth"
1212import { Env } from "../env"
1313import { applyEdits , modify } from "jsonc-parser"
14- import { Instance , type InstanceContext } from "../project/instance"
14+ import { type InstanceContext } from "../project/instance"
15+ import { InstanceStore } from "../project/instance-store"
16+ import { InstanceRef } from "@/effect/instance-ref"
1517import { InstallationLocal , InstallationVersion } from "@opencode-ai/core/installation/version"
1618import { existsSync } from "fs"
1719import { GlobalBus } from "@/bus/global"
@@ -736,12 +738,16 @@ export const layer = Layer.effect(
736738 yield * fs
737739 . writeFileString ( file , JSON . stringify ( mergeDeep ( writable ( existing ) , writable ( config ) ) , null , 2 ) )
738740 . pipe ( Effect . orDie )
739- if ( options ?. dispose !== false ) yield * Effect . promise ( ( ) => Instance . dispose ( ) )
741+ if ( options ?. dispose !== false ) {
742+ const ctx = yield * InstanceRef
743+ if ( ctx ) yield * Effect . promise ( ( ) => InstanceStore . runtime . runPromise ( ( s ) => s . dispose ( ctx ) ) )
744+ }
740745 } )
741746
742747 const invalidate = Effect . fn ( "Config.invalidate" ) ( function * ( wait ?: boolean ) {
743748 yield * invalidateGlobal
744- const task = Instance . disposeAll ( )
749+ const task = InstanceStore . runtime
750+ . runPromise ( ( s ) => s . disposeAll ( ) )
745751 . catch ( ( ) => undefined )
746752 . finally ( ( ) =>
747753 GlobalBus . emit ( "event" , {
0 commit comments