From e0d655d08a188d1b17a45cdfbba3aa585cb84de5 Mon Sep 17 00:00:00 2001 From: James Long Date: Mon, 29 Jun 2026 17:55:24 -0400 Subject: [PATCH] fix(opencode): keep plugin pty environment route local --- .../opencode/src/plugin/pty-environment.ts | 5 +---- .../server/routes/instance/httpapi/server.ts | 4 +--- packages/server/src/handlers/pty.ts | 20 ++++++++++--------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/opencode/src/plugin/pty-environment.ts b/packages/opencode/src/plugin/pty-environment.ts index b30fefeb2c..67321372f1 100644 --- a/packages/opencode/src/plugin/pty-environment.ts +++ b/packages/opencode/src/plugin/pty-environment.ts @@ -1,12 +1,11 @@ export * as PluginPtyEnvironment from "./pty-environment" -import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { PtyEnvironment } from "@opencode-ai/server/pty-environment" import { Effect, Layer } from "effect" import { InstanceStore } from "@/project/instance-store" import { Plugin } from "." -const layer = Layer.effect( +export const layer = Layer.effect( PtyEnvironment.Service, Effect.gen(function* () { const plugin = yield* Plugin.Service @@ -23,5 +22,3 @@ const layer = Layer.effect( }) }), ) - -export const node = LayerNode.make({ service: PtyEnvironment.Service, layer, deps: [Plugin.node, InstanceStore.node] }) diff --git a/packages/opencode/src/server/routes/instance/httpapi/server.ts b/packages/opencode/src/server/routes/instance/httpapi/server.ts index 859e972286..17cd30f30c 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/server.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/server.ts @@ -102,7 +102,6 @@ import { handlers } from "@opencode-ai/server/handlers" import { locationServiceMapLayer } from "@opencode-ai/core/location-services" import { layer as locationLayer } from "@opencode-ai/server/location" import { sessionLocationLayer } from "@opencode-ai/server/middleware/session-location" -import { PtyEnvironment } from "@opencode-ai/server/pty-environment" import { schemaErrorLayer as v2SchemaErrorLayer } from "@opencode-ai/server/middleware/schema-error" import { workspaceHandlers } from "./handlers/workspace" import { instanceContextLayer } from "./middleware/instance-context" @@ -175,6 +174,7 @@ const instanceRoutes = instanceApiRoutes.pipe( ) const serverRoutes = HttpApiBuilder.layer(Api).pipe( Layer.provide(handlers), + Layer.provide(PluginPtyEnvironment.layer), Layer.provide([serverHttpApiAuthLayer, v2SchemaErrorLayer]), ) @@ -264,7 +264,6 @@ const app = LayerNode.group([ ProjectV2.node, ProjectCopy.node, PtyTicket.node, - PluginPtyEnvironment.node, ]) export function createRoutes( @@ -293,7 +292,6 @@ export function createRoutes( Layer.provide(sessionLocationLayer), Layer.provide(locationLayer), - Layer.provide(PtyEnvironment.layer), Layer.provide( SessionV2.defaultLayer.pipe( Layer.provide(SessionExecutionLocal.defaultLayer), diff --git a/packages/server/src/handlers/pty.ts b/packages/server/src/handlers/pty.ts index cda2cf43e9..2756c1cc8a 100644 --- a/packages/server/src/handlers/pty.ts +++ b/packages/server/src/handlers/pty.ts @@ -41,16 +41,18 @@ export const PtyHandler = HttpApiBuilder.group(Api, "server.pty", (handlers) => const pty = yield* Pty.Service const location = yield* Location.Service const cwd = ctx.payload.cwd || location.directory + const env = yield* environment.get({ directory: location.directory, cwd }) + const created = yield* pty.create({ + ...ctx.payload, + args: ctx.payload.args ? [...ctx.payload.args] : undefined, + cwd, + env: { + ...ctx.payload.env, + ...env, + }, + }) return yield* response( - pty.create({ - ...ctx.payload, - args: ctx.payload.args ? [...ctx.payload.args] : undefined, - cwd, - env: { - ...ctx.payload.env, - ...(yield* environment.get({ directory: location.directory, cwd })), - }, - }), + Effect.succeed(created), ) }), )