From 2bea6420021579c7e4cb47897420695c36b67b1b Mon Sep 17 00:00:00 2001 From: jwaterwater Date: Wed, 7 Jan 2026 09:10:01 +0800 Subject: [PATCH] fix: encode non-ASCII directory paths in HTTP headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes error when directory paths contain non-ASCII characters (e.g., Chinese) by using percent-encoding for the x-opencode-directory header, as HTTP headers must be ISO-8859-1 compatible. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- packages/opencode/src/server/server.ts | 7 ++++++- packages/sdk/js/src/v2/client.ts | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index 04ec4673ec4..615d9272866 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -246,7 +246,12 @@ export namespace Server { }, ) .use(async (c, next) => { - const directory = c.req.query("directory") || c.req.header("x-opencode-directory") || process.cwd() + let directory = c.req.query("directory") || c.req.header("x-opencode-directory") || process.cwd() + try { + directory = decodeURIComponent(directory) + } catch { + // fallback to original value + } return Instance.provide({ directory, init: InstanceBootstrap, diff --git a/packages/sdk/js/src/v2/client.ts b/packages/sdk/js/src/v2/client.ts index 806ad26e55a..8685be52d6a 100644 --- a/packages/sdk/js/src/v2/client.ts +++ b/packages/sdk/js/src/v2/client.ts @@ -19,9 +19,11 @@ export function createOpencodeClient(config?: Config & { directory?: string }) { } if (config?.directory) { + const isNonASCII = /[^\x00-\x7F]/.test(config.directory) + const encodedDirectory = isNonASCII ? encodeURIComponent(config.directory) : config.directory config.headers = { ...config.headers, - "x-opencode-directory": config.directory, + "x-opencode-directory": encodedDirectory, } }