From 93fdcbc7c657de267fb4464cbc7f6617c1706768 Mon Sep 17 00:00:00 2001 From: "zhou.yin" Date: Mon, 14 Sep 2026 13:56:38 +0800 Subject: [PATCH] refactor(opencode): extract in-process fetch helper Local `run` and `--mini` both dispatched SDK requests into Server.Default() with the same fetch wrapper. Share one helper so auth-header changes stay in one place. --- packages/opencode/src/cli/cmd/run.ts | 30 +++++++++++----------------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index cccc2550179f..5dea71714697 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -49,6 +49,16 @@ function resolveRunInput(value?: string, piped?: string): string | undefined { return value + "\n" + piped } +const inProcessFetch = (async (input: RequestInfo | URL, init?: RequestInit) => { + const { Server } = await import("@/server/server") + const { ServerAuth } = await import("@/server/auth") + const request = new Request(input, init) + const headers = new Headers(request.headers) + const auth = ServerAuth.header() + if (auth) headers.set("Authorization", auth) + return Server.Default().app.fetch(new Request(request, { headers })) +}) as typeof globalThis.fetch + type FilePart = { type: "file" url: string @@ -907,19 +917,11 @@ export const RunCommand = effectCmd({ if (interactive && !args.attach && !args.session && !args.continue) { const model = pick(args.model) const { runInteractiveLocalMode } = await import("./run/runtime") - const fetchFn = (async (input: RequestInfo | URL, init?: RequestInit) => { - const { Server } = await import("@/server/server") - const request = new Request(input, init) - const headers = new Headers(request.headers) - const auth = ServerAuth.header() - if (auth) headers.set("Authorization", auth) - return Server.Default().app.fetch(new Request(request, { headers })) - }) as typeof globalThis.fetch try { return await runInteractiveLocalMode({ directory: directory ?? root, - fetch: fetchFn, + fetch: inProcessFetch, resolveAgent: localAgent, session, share, @@ -945,17 +947,9 @@ export const RunCommand = effectCmd({ return await execute(sdk) } - const fetchFn = (async (input: RequestInfo | URL, init?: RequestInit) => { - const { Server } = await import("@/server/server") - const request = new Request(input, init) - const headers = new Headers(request.headers) - const auth = ServerAuth.header() - if (auth) headers.set("Authorization", auth) - return Server.Default().app.fetch(new Request(request, { headers })) - }) as typeof globalThis.fetch const sdk = createOpencodeClient({ baseUrl: "http://opencode.internal", - fetch: fetchFn, + fetch: inProcessFetch, directory, }) await execute(sdk)