From 31fb4f7c8b9b6c895d6c2d85629f5c664a4d3b89 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 13 Dec 2025 13:00:59 +0000 Subject: [PATCH] fix(macos): install gateway via npm --- .../Sources/Clawdis/GatewayEnvironment.swift | 17 ++++++++++++++--- apps/macos/Sources/Clawdis/Onboarding.swift | 3 ++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/macos/Sources/Clawdis/GatewayEnvironment.swift b/apps/macos/Sources/Clawdis/GatewayEnvironment.swift index 93eeebd27..afd645bcd 100644 --- a/apps/macos/Sources/Clawdis/GatewayEnvironment.swift +++ b/apps/macos/Sources/Clawdis/GatewayEnvironment.swift @@ -164,10 +164,21 @@ enum GatewayEnvironment { static func installGlobal(version: Semver?, statusHandler: @escaping @Sendable (String) -> Void) async { let preferred = CommandResolver.preferredPaths().joined(separator: ":") let target = version?.description ?? "latest" - let pnpm = CommandResolver.findExecutable(named: "pnpm") ?? "pnpm" - let cmd = [pnpm, "add", "-g", "clawdis@\(target)"] + let npm = CommandResolver.findExecutable(named: "npm") + let pnpm = CommandResolver.findExecutable(named: "pnpm") + let bun = CommandResolver.findExecutable(named: "bun") + let (label, cmd): (String, [String]) = + if let npm { + ("npm", [npm, "install", "-g", "clawdis@\(target)"]) + } else if let pnpm { + ("pnpm", [pnpm, "add", "-g", "clawdis@\(target)"]) + } else if let bun { + ("bun", [bun, "add", "-g", "clawdis@\(target)"]) + } else { + ("npm", ["npm", "install", "-g", "clawdis@\(target)"]) + } - statusHandler("Installing clawdis@\(target) via pnpm…") + statusHandler("Installing clawdis@\(target) via \(label)…") let response = await ShellExecutor.run(command: cmd, cwd: nil, env: ["PATH": preferred], timeout: 300) if response.ok { statusHandler("Installed clawdis@\(target)") diff --git a/apps/macos/Sources/Clawdis/Onboarding.swift b/apps/macos/Sources/Clawdis/Onboarding.swift index 8a64a9131..8737d721f 100644 --- a/apps/macos/Sources/Clawdis/Onboarding.swift +++ b/apps/macos/Sources/Clawdis/Onboarding.swift @@ -291,7 +291,8 @@ struct OnboardingView: View { .foregroundStyle(.secondary) .lineLimit(2) } else { - Text("Uses \"pnpm add -g clawdis@\" on your PATH. We keep the gateway on port 18789.") + Text( + "Uses \"npm install -g clawdis@\" on your PATH. We keep the gateway on port 18789.") .font(.caption) .foregroundStyle(.secondary) .lineLimit(2)