diff --git a/.github/workflows/website-installer-sync.yml b/.github/workflows/website-installer-sync.yml index 7db3350e9546..2ac319367fc9 100644 --- a/.github/workflows/website-installer-sync.yml +++ b/.github/workflows/website-installer-sync.yml @@ -99,9 +99,22 @@ jobs: - name: Checkout uses: actions/checkout@v6 + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: 24 + - name: install.sh dry run run: bash scripts/install.sh --dry-run --no-onboard --no-prompt + - name: install.sh on macOS + env: + OPENCLAW_NO_ONBOARD: "1" + OPENCLAW_NO_PROMPT: "1" + run: | + bash scripts/install.sh --no-onboard --no-prompt --version latest + openclaw --version + windows-installer: runs-on: windows-latest steps: diff --git a/scripts/install.sh b/scripts/install.sh index 3d348e380c52..ad53a1709e25 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1762,6 +1762,7 @@ fix_npm_permissions() { npm config set prefix "$HOME/.npm-global" ui_warn "Avoid sudo npm i -g for future OpenClaw updates; use npm i -g openclaw@latest so npm keeps using this user prefix instead of a different global prefix." + # shellcheck disable=SC2016 persist_shell_path_prepend "$HOME/.npm-global/bin" '$HOME/.npm-global/bin' || true export PATH="$HOME/.npm-global/bin:$PATH" diff --git a/src/auto-reply/reply/directive-handling.model.test.ts b/src/auto-reply/reply/directive-handling.model.test.ts index bf9528ef8982..098d3e202121 100644 --- a/src/auto-reply/reply/directive-handling.model.test.ts +++ b/src/auto-reply/reply/directive-handling.model.test.ts @@ -473,7 +473,7 @@ describe("/model chat UX", () => { cfg: { ...baseConfig(), plugins: { allow: ["workspace-model-list"] }, - } as OpenClawConfig, + } as unknown as OpenClawConfig, }); expect(reply?.text).toContain("- anthropic"); @@ -630,7 +630,7 @@ describe("/model chat UX", () => { }, }, }, - } as OpenClawConfig, + } as unknown as OpenClawConfig, allowedModelCatalog: [{ provider: "openai", id: "gpt-5.5", name: "GPT-5.5" }], }); @@ -673,7 +673,7 @@ describe("/model chat UX", () => { }, }, }, - } as OpenClawConfig, + } as unknown as OpenClawConfig, allowedModelCatalog: [{ provider: "openai", id: "gpt-5.5", name: "GPT-5.5" }], }); @@ -711,7 +711,7 @@ describe("/model chat UX", () => { }, }, }, - } as OpenClawConfig, + } as unknown as OpenClawConfig, allowedModelCatalog: [{ provider: "openai", id: "gpt-5.5", name: "GPT-5.5" }], }); @@ -779,7 +779,7 @@ describe("/model chat UX", () => { }, }, }, - } as OpenClawConfig, + } as unknown as OpenClawConfig, allowedModelCatalog: [ { provider: "anthropic", id: "claude-opus-4-6", name: "Claude Opus 4.6" }, ], @@ -1041,7 +1041,7 @@ describe("/model chat UX", () => { }, }, }, - } as OpenClawConfig, + } as unknown as OpenClawConfig, }); expect(persisted.provider).toBe("openai"); diff --git a/src/auto-reply/reply/model-selection.test.ts b/src/auto-reply/reply/model-selection.test.ts index 5a7496f2368d..616fcbbe3565 100644 --- a/src/auto-reply/reply/model-selection.test.ts +++ b/src/auto-reply/reply/model-selection.test.ts @@ -386,14 +386,14 @@ describe("createModelSelectionState catalog loading", () => { describe("resolveContextTokens", () => { it("prefers provider-qualified cache keys over bare model ids", () => { - MODEL_CONTEXT_TOKEN_CACHE.set("claude-opus-4-6", 200_000); - MODEL_CONTEXT_TOKEN_CACHE.set("anthropic/claude-opus-4-6", 1_000_000); + MODEL_CONTEXT_TOKEN_CACHE.set("gemini-3.1-pro-preview", 200_000); + MODEL_CONTEXT_TOKEN_CACHE.set("google-gemini-cli/gemini-3.1-pro-preview", 1_000_000); const result = resolveContextTokens({ cfg: {} as OpenClawConfig, agentCfg: undefined, - provider: "anthropic", - model: "claude-opus-4-6", + provider: "google-gemini-cli", + model: "gemini-3.1-pro-preview", }); expect(result).toBe(1_000_000); diff --git a/test/scripts/website-installer-sync-workflow.test.ts b/test/scripts/website-installer-sync-workflow.test.ts index 34b6765a5758..17b5573a8c2f 100644 --- a/test/scripts/website-installer-sync-workflow.test.ts +++ b/test/scripts/website-installer-sync-workflow.test.ts @@ -32,6 +32,11 @@ describe("website installer sync workflow", () => { expect(workflow).toContain("bash /tmp/install-cli.sh --prefix /tmp/openclaw"); expect(workflow).toContain("macos-installer:"); expect(workflow).toContain("runs-on: macos-latest"); + expect(workflow).toContain("node-version: 24"); + expect(workflow).toContain('OPENCLAW_NO_ONBOARD: "1"'); + expect(workflow).toContain('OPENCLAW_NO_PROMPT: "1"'); + expect(workflow).toContain("bash scripts/install.sh --no-onboard --no-prompt --version latest"); + expect(workflow).toContain("openclaw --version"); expect(workflow).toContain("windows-installer:"); expect(workflow).toContain("runs-on: windows-latest"); expect(workflow).toContain(".\\scripts\\install.ps1 -DryRun");