From 3077ff3f0ca1648cdabe6a3166d28fec0022bf35 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 26 May 2026 13:16:26 -0400 Subject: [PATCH] fix(opencode): dispose booted worktrees before removal --- packages/opencode/src/project/instance-store.ts | 11 +++++++++++ packages/opencode/src/worktree/index.ts | 3 +++ packages/opencode/test/project/worktree.test.ts | 9 +-------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/opencode/src/project/instance-store.ts b/packages/opencode/src/project/instance-store.ts index 1f513fb1b..ccac93ae1 100644 --- a/packages/opencode/src/project/instance-store.ts +++ b/packages/opencode/src/project/instance-store.ts @@ -19,6 +19,7 @@ export interface Interface { readonly load: (input: LoadInput) => Effect.Effect readonly reload: (input: LoadInput) => Effect.Effect readonly dispose: (ctx: InstanceContext) => Effect.Effect + readonly disposeDirectory: (directory: string) => Effect.Effect readonly disposeAll: () => Effect.Effect readonly provide: (input: LoadInput, effect: Effect.Effect) => Effect.Effect } @@ -151,6 +152,15 @@ export const layer: Layer.Layer Effect.gen(function* () { const svc = yield* Worktree.Service - const ctx = yield* Effect.gen(function* () { - return yield* InstanceRef - }).pipe(provideInstance(directory)) - if (!ctx) return yield* Effect.die(new Error("missing test instance")) - yield* Effect.promise(() => InstanceRuntime.disposeInstance(ctx)) const ok = yield* svc.remove({ directory }) if (!ok) return yield* Effect.fail(new Error(`failed to remove worktree ${directory}`)) })