diff --git a/packages/core/src/control-plane/move-session.ts b/packages/core/src/control-plane/move-session.ts index 5beae18518..e227f88df5 100644 --- a/packages/core/src/control-plane/move-session.ts +++ b/packages/core/src/control-plane/move-session.ts @@ -66,7 +66,7 @@ export interface Interface { export class Service extends Context.Service()("@opencode/ControlPlaneMoveSession") {} -export const layer = Layer.effect( +const layer = Layer.effect( Service, Effect.gen(function* () { const git = yield* Git.Service @@ -141,13 +141,6 @@ export const layer = Layer.effect( }), ) -export const defaultLayer = layer.pipe( - Layer.provide(Git.defaultLayer), - Layer.provide(EventV2.defaultLayer), - Layer.provide(ProjectV2.defaultLayer), - Layer.provide(SessionStore.defaultLayer), -) - export const node = makeGlobalNode({ service: Service, layer, diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts index a01f670551..2dabfb2d6f 100644 --- a/packages/core/src/session.ts +++ b/packages/core/src/session.ts @@ -181,7 +181,7 @@ export interface Interface { export class Service extends Context.Service()("@opencode/v2/Session") {} -export const layer = Layer.effect( +const layer = Layer.effect( Service, Effect.gen(function* () { const database = yield* Database.Service @@ -457,15 +457,6 @@ export const layer = Layer.effect( }), ) -export const defaultLayer = layer.pipe( - Layer.provide(SessionStore.defaultLayer), - Layer.provide(SessionProjector.defaultLayer), - Layer.provide(EventV2.defaultLayer), - Layer.provide(Database.defaultLayer), - Layer.provide(ProjectV2.defaultLayer), - Layer.orDie, -) - const resolvePrompt = (input: PromptInput.Prompt) => Prompt.make({ text: input.text, diff --git a/packages/core/src/session/execution/local.ts b/packages/core/src/session/execution/local.ts index 281c5b7044..d874c40832 100644 --- a/packages/core/src/session/execution/local.ts +++ b/packages/core/src/session/execution/local.ts @@ -8,7 +8,7 @@ import { SessionStore } from "../store" import { SessionExecution } from "../execution" /** Current-process routing for implicit-local Locations. Future remote placement belongs here. */ -export const layer = Layer.effect( +const layer = Layer.effect( SessionExecution.Service, Effect.gen(function* () { const store = yield* SessionStore.Service @@ -37,8 +37,6 @@ export const layer = Layer.effect( }), ) -export const defaultLayer = layer.pipe(Layer.provide(SessionStore.defaultLayer)) - export const node = makeGlobalNode({ service: SessionExecution.Service, layer, diff --git a/packages/core/src/session/projector.ts b/packages/core/src/session/projector.ts index 436fd2d263..afa60dfa88 100644 --- a/packages/core/src/session/projector.ts +++ b/packages/core/src/session/projector.ts @@ -208,7 +208,7 @@ function insertMessage(db: DatabaseService, event: SessionEvent.Event, message: .pipe(Effect.orDie) } -export const layer = Layer.effectDiscard( +const layer = Layer.effectDiscard( Effect.gen(function* () { const events = yield* EventV2.Service const { db } = yield* Database.Service @@ -455,5 +455,4 @@ export const layer = Layer.effectDiscard( }), ) -export const defaultLayer = layer.pipe(Layer.provide(EventV2.defaultLayer), Layer.provide(Database.defaultLayer)) export const node = makeGlobalNode({ name: "session-projector", layer, deps: [EventV2.node, Database.node] }) diff --git a/packages/core/src/session/runner/llm.ts b/packages/core/src/session/runner/llm.ts index 7983c5e9c9..94c77d19e9 100644 --- a/packages/core/src/session/runner/llm.ts +++ b/packages/core/src/session/runner/llm.ts @@ -89,7 +89,7 @@ import { llmClient } from "../../effect/app-node-platform" * explicit loop starts the next provider turn after local settlement. Configured agent step limits bound the loop. */ -export const layer = Layer.effect( +const layer = Layer.effect( Service, Effect.gen(function* () { const events = yield* EventV2.Service @@ -406,8 +406,6 @@ export const layer = Layer.effect( }), ) -export const defaultLayer = layer - export const node = makeLocationNode({ service: Service, layer, diff --git a/packages/core/src/session/store.ts b/packages/core/src/session/store.ts index 792ee2c6ac..273444d25c 100644 --- a/packages/core/src/session/store.ts +++ b/packages/core/src/session/store.ts @@ -25,7 +25,7 @@ export interface Interface { export class Service extends Context.Service()("@opencode/v2/SessionStore") {} -export const layer = Layer.effect( +const layer = Layer.effect( Service, Effect.gen(function* () { const { db } = yield* Database.Service @@ -60,6 +60,4 @@ export const layer = Layer.effect( }), ) -export const defaultLayer = layer.pipe(Layer.provide(Database.defaultLayer)) - export const node = makeGlobalNode({ service: Service, layer, deps: [Database.node] }) diff --git a/packages/core/src/session/todo.ts b/packages/core/src/session/todo.ts index 25852e40d0..56c73042c4 100644 --- a/packages/core/src/session/todo.ts +++ b/packages/core/src/session/todo.ts @@ -23,7 +23,7 @@ export interface Interface { export class Service extends Context.Service()("@opencode/v2/SessionTodo") {} -export const layer = Layer.effect( +const layer = Layer.effect( Service, Effect.gen(function* () { const { db } = yield* Database.Service @@ -75,6 +75,4 @@ export const layer = Layer.effect( }), ) -export const defaultLayer = layer.pipe(Layer.provide(EventV2.defaultLayer), Layer.provide(Database.defaultLayer)) - export const node = makeLocationNode({ service: Service, layer, deps: [EventV2.node, Database.node] }) diff --git a/packages/opencode/src/server/routes/instance/httpapi/server.ts b/packages/opencode/src/server/routes/instance/httpapi/server.ts index 73de083f97..127a159304 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/server.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/server.ts @@ -52,6 +52,7 @@ import { Worktree } from "@/worktree" import { RuntimeFlags } from "@/effect/runtime-flags" import { MoveSession } from "@opencode-ai/core/control-plane/move-session" import { Database } from "@opencode-ai/core/database/database" +import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { httpClient } from "@opencode-ai/core/effect/app-node-platform" import { EventV2 } from "@opencode-ai/core/event" @@ -64,6 +65,7 @@ import { PtyTicket } from "@opencode-ai/core/pty/ticket" import { Ripgrep } from "@opencode-ai/core/ripgrep" import { SessionProjector } from "@opencode-ai/core/session/projector" import { SessionV2 } from "@opencode-ai/core/session" +import { SessionExecution } from "@opencode-ai/core/session/execution" import * as SessionExecutionLocal from "@opencode-ai/core/session/execution/local" import { lazy } from "@/util/lazy" import { CorsConfig, isAllowedCorsOrigin, type CorsOptions } from "@opencode-ai/server/cors" @@ -285,7 +287,7 @@ export function createRoutes( corsVaryFix, fenceLayer, cors(corsOptions), - MoveSession.defaultLayer, + AppNodeBuilder.build(MoveSession.node), HttpServer.layerServices, ]), Layer.provide(Layer.succeed(CorsConfig)(corsOptions)), @@ -295,8 +297,7 @@ export function createRoutes( Layer.provide(locationLayer), Layer.provide(PtyEnvironment.layer), Layer.provide( - SessionV2.defaultLayer.pipe( - Layer.provide(SessionExecutionLocal.defaultLayer), + AppNodeBuilder.build(SessionV2.node, [[SessionExecution.node, SessionExecutionLocal.node]]).pipe( Layer.provide(locationServiceMapLayer), ), ),