From c075a5d6946bb649c5117dcf98b324987eef0176 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 19 Mar 2026 21:54:53 -0400 Subject: [PATCH] fix: force reinstall in which() when .bin is missing When the lockfile exists but .bin is empty or absent, add() would read the lockfile via loadVirtual() and return early without calling reify(). Delete the lockfile before calling add() so it proceeds with a full install. --- packages/opencode/src/npm/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/npm/index.ts b/packages/opencode/src/npm/index.ts index 12121b005f..50879a10cc 100644 --- a/packages/opencode/src/npm/index.ts +++ b/packages/opencode/src/npm/index.ts @@ -16,7 +16,7 @@ import { Global } from "../global" import { Lock } from "../util/lock" import { Log } from "../util/log" import path from "path" -import { readdir } from "fs/promises" +import { readdir, rm } from "fs/promises" import { Filesystem } from "@/util/filesystem" const { Arborist } = await import("@npmcli/arborist") @@ -172,6 +172,7 @@ export namespace Npm { const bin = await pick() if (bin) return path.join(binDir, bin) + await rm(path.join(dir, "package-lock.json"), { force: true }) await add(pkg) const resolved = await pick() if (!resolved) throw new Error(`No binary found for package "${pkg}" after install`)