diff options
| author | Brendan Allan <[email protected]> | 2026-04-30 15:06:17 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-30 07:06:17 +0000 |
| commit | 3398fd7719dee3f17ec6601c6ae9bf7fc4d7c8a5 (patch) | |
| tree | d29172cedf236bd445bddbdcab326f6ac5f53ea7 | |
| parent | 9bddf7f3ef5365eee0744374bcdbd1e9ec4b3e7b (diff) | |
| download | opencode-3398fd7719dee3f17ec6601c6ae9bf7fc4d7c8a5.tar.gz opencode-3398fd7719dee3f17ec6601c6ae9bf7fc4d7c8a5.zip | |
feat(httpapi): add CORS middleware to instance routes (#25074)
| -rw-r--r-- | packages/opencode/src/server/routes/instance/httpapi/server.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/opencode/src/server/routes/instance/httpapi/server.ts b/packages/opencode/src/server/routes/instance/httpapi/server.ts index 86b7182c7..370696ddb 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/server.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/server.ts @@ -55,6 +55,7 @@ import { workspaceRouterMiddleware, workspaceRoutingLayer } from "./middleware/w import { disposeMiddleware } from "./lifecycle" import { memoMap } from "@opencode-ai/core/effect/memo-map" import * as ServerBackend from "@/server/backend" +import type { Predicate } from "effect/Predicate" export const context = Context.makeUnsafe<unknown>(new Map()) @@ -104,6 +105,23 @@ const instanceRoutes = Layer.mergeAll(rawInstanceRoutes, instanceApiRoutes).pipe ) export const routes = Layer.mergeAll(rootApiRoutes, instanceRoutes).pipe( + Layer.provide( + HttpRouter.cors({ + maxAge: 86_400, + allowedOrigins: ((input) => { + return ( + !input || + input.startsWith("http://localhost:") || + input.startsWith("http://127.0.0.1:") || + input.startsWith("oc://renderer") || + input === "tauri://localhost" || + input === "http://tauri.localhost" || + input === "https://tauri.localhost" || + /^https:\/\/([a-z0-9-]+\.)*opencode\.ai$/.test(input) + ) + }) as Predicate<string> as any, + }), + ), Layer.provide([ runtime, Account.defaultLayer, |
