import { SessionV2 } from "@opencode-ai/core/session" import { Database } from "@opencode-ai/core/database/database" import { EventV2 } from "@opencode-ai/core/event" import { LocationServiceMap } from "@opencode-ai/core/location-layer" import { PermissionSaved } from "@opencode-ai/core/permission/saved" import { ProjectV2 } from "@opencode-ai/core/project" import * as SessionExecutionLocal from "@opencode-ai/core/session/execution/local" import { SessionProjector } from "@opencode-ai/core/session/projector" import { SessionStore } from "@opencode-ai/core/session/store" import { Layer } from "effect" import { layer as v2LocationLayer } from "../groups/v2/location" import { messageHandlers } from "./v2/message" import { modelHandlers } from "./v2/model" import { providerHandlers } from "./v2/provider" import { sessionHandlers } from "./v2/session" import { permissionHandlers, savedPermissionHandlers, sessionPermissionHandlers } from "./v2/permission" import { fileSystemHandlers } from "./v2/fs" import { questionHandlers, sessionQuestionHandlers } from "./v2/question" const routedSessions = SessionV2.layer.pipe( Layer.provide(SessionProjector.layer), Layer.provide(SessionExecutionLocal.layer), Layer.provide(LocationServiceMap.layer), Layer.provide(SessionStore.layer), Layer.provide(EventV2.layer), Layer.provide(Database.defaultLayer), Layer.provide(ProjectV2.defaultLayer), Layer.orDie, ) export const v2Handlers = Layer.mergeAll( sessionHandlers, messageHandlers, modelHandlers, providerHandlers, permissionHandlers, sessionPermissionHandlers, savedPermissionHandlers, fileSystemHandlers, questionHandlers, sessionQuestionHandlers, ).pipe( Layer.provide(v2LocationLayer), Layer.provide(LocationServiceMap.layer), Layer.provide(PermissionSaved.layer), Layer.provide(routedSessions), )