From 92f8d0b0de54bba32ce53581be69396cd6089188 Mon Sep 17 00:00:00 2001 From: marius-kilocode Date: Mon, 20 Jul 2026 16:48:02 +0200 Subject: [PATCH] fix: complete instance boot deferreds on interruption When an instance boot fiber is interrupted by an enclosing scope close, its cache entry kept a never-resolving deferred, hanging every later load or reload of that directory. Complete the deferred and drop failed entries on any exit so subsequent loads boot fresh. --- .../opencode/src/project/instance-store.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/opencode/src/project/instance-store.ts b/packages/opencode/src/project/instance-store.ts index 2f60f1d57c9..a3d9e77d55f 100644 --- a/packages/opencode/src/project/instance-store.ts +++ b/packages/opencode/src/project/instance-store.ts @@ -73,12 +73,20 @@ export const layer: Layer.Layer - Effect.gen(function* () { - const exit = yield* Effect.exit(boot({ ...input, directory })) - if (Exit.isFailure(exit)) yield* removeEntry(directory, entry) - yield* Deferred.done(entry.deferred, exit).pipe(Effect.asVoid) - }) + Effect.suspend(() => boot({ ...input, directory })).pipe( + Effect.onExit((exit) => + Effect.gen(function* () { + if (Exit.isFailure(exit)) yield* removeEntry(directory, entry) + yield* Deferred.done(entry.deferred, exit) + }), + ), + ) + // kilocode_change end const emitDisposed = (input: { directory: string; project?: string }) => Effect.sync(() =>