Просмотр исходного кода

fix: encode non-ASCII directory paths in HTTP headers (#7145)

Co-authored-by: Claude <[email protected]>
jwaterwater 1 месяц назад
Родитель
Сommit
2d52a461a0
2 измененных файлов с 9 добавлено и 2 удалено
  1. 6 1
      packages/opencode/src/server/server.ts
  2. 3 1
      packages/sdk/js/src/v2/client.ts

+ 6 - 1
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,

+ 3 - 1
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,
     }
   }