diff options
| author | jwaterwater <[email protected]> | 2026-01-07 20:46:17 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-07 06:46:17 -0600 |
| commit | 2d52a461a0fb20828c3d3334773a5cbffe7bf3ee (patch) | |
| tree | 9799bd8a3b25c5fba0d7bf073989cceaed961638 | |
| parent | 9cce0cf4f404debe1656788328bedd029c618d78 (diff) | |
| download | opencode-2d52a461a0fb20828c3d3334773a5cbffe7bf3ee.tar.gz opencode-2d52a461a0fb20828c3d3334773a5cbffe7bf3ee.zip | |
fix: encode non-ASCII directory paths in HTTP headers (#7145)
Co-authored-by: Claude <[email protected]>
| -rw-r--r-- | packages/opencode/src/server/server.ts | 7 | ||||
| -rw-r--r-- | 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 04ec4673e..615d92728 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 806ad26e5..8685be52d 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, } } |
