summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-04-30 15:06:17 +0800
committerGitHub <[email protected]>2026-04-30 07:06:17 +0000
commit3398fd7719dee3f17ec6601c6ae9bf7fc4d7c8a5 (patch)
treed29172cedf236bd445bddbdcab326f6ac5f53ea7 /packages
parent9bddf7f3ef5365eee0744374bcdbd1e9ec4b3e7b (diff)
downloadopencode-3398fd7719dee3f17ec6601c6ae9bf7fc4d7c8a5.tar.gz
opencode-3398fd7719dee3f17ec6601c6ae9bf7fc4d7c8a5.zip
feat(httpapi): add CORS middleware to instance routes (#25074)
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/server/routes/instance/httpapi/server.ts18
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,