| 123456789101112131415161718192021222324252627282930313233 |
- import { Database } from "@opencode-ai/core/database/database"
- import { EventV2 } from "@opencode-ai/core/event"
- import { LocationServiceMap } from "@opencode-ai/core/location-layer"
- import { FetchHttpClient, HttpRouter, HttpServer } from "effect/unstable/http"
- import { HttpApiBuilder } from "effect/unstable/httpapi"
- import { Layer, Option } from "effect"
- import { Api } from "./api"
- import { ServerAuth } from "./auth"
- import { handlers } from "./handlers"
- import { authorizationLayer } from "./middleware/authorization"
- import { schemaErrorLayer } from "./middleware/schema-error"
- export function createRoutes(password?: string) {
- return HttpApiBuilder.layer(Api, { openapiPath: "/openapi.json" }).pipe(
- Layer.provide(handlers),
- Layer.provide(authorizationLayer),
- Layer.provide(schemaErrorLayer),
- Layer.provide(
- password
- ? ServerAuth.Config.layer({ username: "opencode", password: Option.some(password) })
- : ServerAuth.Config.defaultLayer,
- ),
- Layer.provide(LocationServiceMap.layer),
- Layer.provide(Database.defaultLayer),
- Layer.provide(EventV2.defaultLayer),
- Layer.provide(FetchHttpClient.layer),
- )
- }
- export const routes = createRoutes()
- export const webHandler = () =>
- HttpRouter.toWebHandler(routes.pipe(Layer.provide(HttpServer.layerServices)), { disableLogger: true })
|