From 5e3dc8099921952925b6a70853cb06f5e4bebcdc Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Fri, 10 Apr 2026 23:52:12 -0400 Subject: [PATCH] refactor: collapse command facade (#21981) --- packages/opencode/src/command/index.ts | 7 ------- packages/opencode/src/effect/bootstrap-runtime.ts | 9 +++++++++ packages/opencode/src/project/bootstrap.ts | 6 +++--- packages/opencode/src/server/instance.ts | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 packages/opencode/src/effect/bootstrap-runtime.ts diff --git a/packages/opencode/src/command/index.ts b/packages/opencode/src/command/index.ts index 0c5ef67f4d..42f53301b2 100644 --- a/packages/opencode/src/command/index.ts +++ b/packages/opencode/src/command/index.ts @@ -1,6 +1,5 @@ import { BusEvent } from "@/bus/bus-event" import { InstanceState } from "@/effect/instance-state" -import { makeRuntime } from "@/effect/run-service" import type { InstanceContext } from "@/project/instance" import { SessionID, MessageID } from "@/session/schema" import { Effect, Layer, Context } from "effect" @@ -189,10 +188,4 @@ export namespace Command { Layer.provide(MCP.defaultLayer), Layer.provide(Skill.defaultLayer), ) - - const { runPromise } = makeRuntime(Service, defaultLayer) - - export async function list() { - return runPromise((svc) => svc.list()) - } } diff --git a/packages/opencode/src/effect/bootstrap-runtime.ts b/packages/opencode/src/effect/bootstrap-runtime.ts new file mode 100644 index 0000000000..648f2484e6 --- /dev/null +++ b/packages/opencode/src/effect/bootstrap-runtime.ts @@ -0,0 +1,9 @@ +import { Layer, ManagedRuntime } from "effect" +import { memoMap } from "./run-service" + +import { Format } from "@/format" +import { ShareNext } from "@/share/share-next" + +export const BootstrapLayer = Layer.mergeAll(Format.defaultLayer, ShareNext.defaultLayer) + +export const BootstrapRuntime = ManagedRuntime.make(BootstrapLayer, { memoMap }) diff --git a/packages/opencode/src/project/bootstrap.ts b/packages/opencode/src/project/bootstrap.ts index 1340a692ff..9f6f7fa6fa 100644 --- a/packages/opencode/src/project/bootstrap.ts +++ b/packages/opencode/src/project/bootstrap.ts @@ -10,14 +10,14 @@ import { Bus } from "../bus" import { Command } from "../command" import { Instance } from "./instance" import { Log } from "@/util/log" -import { AppRuntime } from "@/effect/app-runtime" +import { BootstrapRuntime } from "@/effect/bootstrap-runtime" import { ShareNext } from "@/share/share-next" export async function InstanceBootstrap() { Log.Default.info("bootstrapping", { directory: Instance.directory }) await Plugin.init() - void AppRuntime.runPromise(ShareNext.Service.use((svc) => svc.init())) - void AppRuntime.runPromise(Format.Service.use((svc) => svc.init())) + void BootstrapRuntime.runPromise(ShareNext.Service.use((svc) => svc.init())) + void BootstrapRuntime.runPromise(Format.Service.use((svc) => svc.init())) await LSP.init() File.init() FileWatcher.init() diff --git a/packages/opencode/src/server/instance.ts b/packages/opencode/src/server/instance.ts index 015d67bfc1..6525d2ded7 100644 --- a/packages/opencode/src/server/instance.ts +++ b/packages/opencode/src/server/instance.ts @@ -191,7 +191,7 @@ export const InstanceRoutes = (upgrade: UpgradeWebSocket, app: Hono = new Hono() }, }), async (c) => { - const commands = await Command.list() + const commands = await AppRuntime.runPromise(Command.Service.use((svc) => svc.list())) return c.json(commands) }, )