From d8d7b432aeb394d38cb7006a96756eb5b20c2794 Mon Sep 17 00:00:00 2001 From: James Long Date: Mon, 4 May 2026 13:36:49 -0400 Subject: [PATCH] Abort session before warping --- packages/opencode/src/control-plane/workspace.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/opencode/src/control-plane/workspace.ts b/packages/opencode/src/control-plane/workspace.ts index aa045cc5c4..7976f5762a 100644 --- a/packages/opencode/src/control-plane/workspace.ts +++ b/packages/opencode/src/control-plane/workspace.ts @@ -21,6 +21,7 @@ import { getAdaptor } from "./adaptors" import { type WorkspaceInfo, WorkspaceInfo as WorkspaceInfoSchema } from "./types" import { WorkspaceID } from "./schema" import { Session } from "@/session/session" +import { SessionPrompt } from "@/session/prompt" import { SessionTable } from "@/session/session.sql" import { SessionID } from "@/session/schema" import { errorData } from "@/util/error" @@ -162,6 +163,7 @@ export const layer = Layer.effect( Effect.gen(function* () { const auth = yield* Auth.Service const session = yield* Session.Service + const prompt = yield* SessionPrompt.Service const http = yield* HttpClient.HttpClient const connections = new Map() const syncFibers = yield* FiberMap.make() @@ -495,6 +497,8 @@ export const layer = Layer.effect( const sessionWarp = Effect.fn("Workspace.sessionWarp")(function* (input: SessionWarpInput) { return yield* Effect.gen(function* () { + yield* prompt.cancel(input.sessionID) + log.info("session warp requested", { workspaceID: input.workspaceID, sessionID: input.sessionID, @@ -814,6 +818,7 @@ export const layer = Layer.effect( export const defaultLayer = layer.pipe( Layer.provide(Auth.defaultLayer), Layer.provide(Session.defaultLayer), + Layer.provide(SessionPrompt.defaultLayer), Layer.provide(FetchHttpClient.layer), )