From 717b5446331f8ff3034c0d35b95b832e92ffef49 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 14 Oct 2025 13:18:40 -0500 Subject: [PATCH] fix: false positive package manager detection in upgrade (#3181) --- packages/opencode/src/cli/cmd/upgrade.ts | 16 +++++++++++++--- packages/opencode/src/installation/index.ts | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/cli/cmd/upgrade.ts b/packages/opencode/src/cli/cmd/upgrade.ts index 8c1abdeab..65f3bab4d 100644 --- a/packages/opencode/src/cli/cmd/upgrade.ts +++ b/packages/opencode/src/cli/cmd/upgrade.ts @@ -27,9 +27,19 @@ export const UpgradeCommand = { const detectedMethod = await Installation.method() const method = (args.method as Installation.Method) ?? detectedMethod if (method === "unknown") { - prompts.log.error(`opencode is installed to ${process.execPath} and seems to be managed by a package manager`) - prompts.outro("Done") - return + prompts.log.error(`opencode is installed to ${process.execPath} and may be managed by a package manager`) + const install = await prompts.select({ + message: "Install anyways?", + options: [ + { label: "Yes", value: true }, + { label: "No", value: false }, + ], + initialValue: false, + }) + if (!install) { + prompts.outro("Done") + return + } } prompts.log.info("Using method: " + method) const target = args.target ? args.target.replace(/^v/, "") : await Installation.latest() diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts index b01ce5f7b..95b431ecd 100644 --- a/packages/opencode/src/installation/index.ts +++ b/packages/opencode/src/installation/index.ts @@ -50,6 +50,7 @@ export namespace Installation { export async function method() { if (process.execPath.includes(path.join(".opencode", "bin"))) return "curl" + if (process.execPath.includes(path.join(".local", "bin"))) return "curl" const exec = process.execPath.toLowerCase() const checks = [