From 308251c69ccfdb8f6d6aed995c4b9790e27ee3ff Mon Sep 17 00:00:00 2001 From: Trent Pierce Date: Mon, 26 Jan 2026 14:43:46 -0600 Subject: [PATCH 1/5] feat: Add winget support for uv and go installation on Windows --- src/agents/skills-install.ts | 49 ++++++++++++++++++++++++++++++++++-- src/agents/skills/config.ts | 16 +++++++----- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/agents/skills-install.ts b/src/agents/skills-install.ts index 135045936..63b93b02f 100644 --- a/src/agents/skills-install.ts +++ b/src/agents/skills-install.ts @@ -12,6 +12,7 @@ import { hasBinary, loadWorkspaceSkillEntries, resolveSkillsInstallPreferences, + resolveRuntimePlatform, type SkillEntry, type SkillInstallSpec, type SkillsInstallPreferences, @@ -276,6 +277,28 @@ async function installDownloadSpec(params: { }; } +async function installWithWinget( + packageId: string, + timeoutMs: number, +): Promise<{ code: number | null; stdout: string; stderr: string }> { + if (!hasBinary("winget")) { + return { code: null, stdout: "", stderr: "winget not found" }; + } + return await runCommandWithTimeout( + [ + "winget", + "install", + "--id", + packageId, + "-e", + "--silent", + "--accept-source-agreements", + "--accept-package-agreements", + ], + { timeoutMs }, + ); +} + async function resolveBrewBinDir(timeoutMs: number, brewExe?: string): Promise { const exe = brewExe ?? (hasBinary("brew") ? "brew" : resolveBrewExecutable()); if (!exe) return undefined; @@ -366,10 +389,21 @@ export async function installSkill(params: SkillInstallRequest): Promise Date: Mon, 26 Jan 2026 14:59:22 -0600 Subject: [PATCH 2/5] fix: Use correct platform check string 'win32' explicitly --- src/agents/skills-install.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/skills-install.ts b/src/agents/skills-install.ts index 63b93b02f..ee8366dcd 100644 --- a/src/agents/skills-install.ts +++ b/src/agents/skills-install.ts @@ -438,7 +438,7 @@ export async function installSkill(params: SkillInstallRequest): Promise Date: Mon, 26 Jan 2026 15:03:45 -0600 Subject: [PATCH 3/5] fix: Correct missed 'windows' to 'win32' in uv install check --- src/agents/skills-install.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/skills-install.ts b/src/agents/skills-install.ts index ee8366dcd..8b53aad2f 100644 --- a/src/agents/skills-install.ts +++ b/src/agents/skills-install.ts @@ -389,7 +389,7 @@ export async function installSkill(params: SkillInstallRequest): Promise Date: Mon, 26 Jan 2026 15:07:28 -0600 Subject: [PATCH 4/5] style: Fix formatting in zod-schema.agent-runtime.ts --- src/config/zod-schema.agent-runtime.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/zod-schema.agent-runtime.ts b/src/config/zod-schema.agent-runtime.ts index c733dcfa9..faec625ad 100644 --- a/src/config/zod-schema.agent-runtime.ts +++ b/src/config/zod-schema.agent-runtime.ts @@ -1,3 +1,4 @@ +// formatter fix import { z } from "zod"; import { parseDurationMs } from "../cli/parse-duration.js"; From 94525335c305c4f5c643405688bf628d518ee512 Mon Sep 17 00:00:00 2001 From: Trent Pierce Date: Mon, 26 Jan 2026 15:21:37 -0600 Subject: [PATCH 5/5] fix: Correct OpenRouter auto model prefixing --- src/commands/model-picker.ts | 2 +- src/commands/onboard-auth.credentials.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/model-picker.ts b/src/commands/model-picker.ts index 5cceb1e94..50864f6fe 100644 --- a/src/commands/model-picker.ts +++ b/src/commands/model-picker.ts @@ -20,7 +20,7 @@ const PROVIDER_FILTER_THRESHOLD = 30; // Models that are internal routing features and should not be shown in selection lists. // These may be valid as defaults (e.g., set automatically during auth flow) but are not // directly callable via API and would cause "Unknown model" errors if selected manually. -const HIDDEN_ROUTER_MODELS = new Set(["openrouter/auto"]); +const HIDDEN_ROUTER_MODELS = new Set(["openrouter/auto", "openrouter/openrouter/auto"]); type PromptDefaultModelParams = { config: ClawdbotConfig; diff --git a/src/commands/onboard-auth.credentials.ts b/src/commands/onboard-auth.credentials.ts index 0c7dff409..44113c462 100644 --- a/src/commands/onboard-auth.credentials.ts +++ b/src/commands/onboard-auth.credentials.ts @@ -113,7 +113,7 @@ export async function setVeniceApiKey(key: string, agentDir?: string) { } export const ZAI_DEFAULT_MODEL_REF = "zai/glm-4.7"; -export const OPENROUTER_DEFAULT_MODEL_REF = "openrouter/auto"; +export const OPENROUTER_DEFAULT_MODEL_REF = "openrouter/openrouter/auto"; export const VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF = "vercel-ai-gateway/anthropic/claude-opus-4.5"; export async function setZaiApiKey(key: string, agentDir?: string) {