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

core: enable npm bin links on non-Windows platforms to allow plugin executables to work while keeping them disabled on Windows CI where symlink permissions are restricted

Dax Raad 1 месяц назад
Родитель
Сommit
4c57e39466
2 измененных файлов с 4 добавлено и 11 удалено
  1. 1 10
      packages/opencode/src/config/config.ts
  2. 3 1
      packages/opencode/src/npm/index.ts

+ 1 - 10
packages/opencode/src/config/config.ts

@@ -34,8 +34,6 @@ import { Account } from "@/account"
 import { ConfigPaths } from "./paths"
 import { Filesystem } from "@/util/filesystem"
 import { Npm } from "@/npm"
-import { BunProc } from "@/bun"
-import { proxied } from "@/util/proxied"
 
 export namespace Config {
   const ModelId = z.string().meta({ $ref: "https://models.dev/model-schema.json#/$defs/Model" })
@@ -289,14 +287,7 @@ export namespace Config {
 
     // Install any additional dependencies defined in the package.json
     // This allows local plugins and custom tools to use external packages
-    await BunProc.run(
-      [
-        "install",
-        // TODO: get rid of this case (see: https://github.com/oven-sh/bun/issues/19936)
-        ...(proxied() || process.env.CI ? ["--no-cache"] : []),
-      ],
-      { cwd: dir },
-    ).catch((err) => {
+    await Npm.install(dir).catch((err) => {
       log.warn("failed to install dependencies", { dir, error: err })
     })
   }

+ 3 - 1
packages/opencode/src/npm/index.ts

@@ -84,9 +84,11 @@ export namespace Npm {
 
   export async function install(dir: string) {
     log.info("installing dependencies", { dir })
+    // Disable binLinks on Windows CI where symlink permissions are restricted
+    const isWindowsCI = process.platform === "win32" && process.env.CI
     const arb = new Arborist({
       path: dir,
-      binLinks: false,
+      binLinks: !isWindowsCI,
       progress: false,
       savePrefix: "",
     })