From 1b581b4c71215d7f9d5a894bc460faadf21cfc06 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 27 Apr 2026 10:56:30 +0100 Subject: [PATCH] fix(ci): stabilize live release validation --- .../openclaw-live-and-e2e-checks-reusable.yml | 11 +++++++++++ .../connection-bound-ids.live.test.ts | 3 ++- extensions/moonshot/moonshot.live.test.ts | 2 +- src/gateway/gateway-models.profiles.live.test.ts | 13 +++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml index d308d0159c8..425435eabf4 100644 --- a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml +++ b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml @@ -1364,6 +1364,17 @@ jobs: - name: Hydrate live auth/profile inputs run: bash scripts/ci-hydrate-live-auth.sh + - name: Install live media dependencies + if: matrix.suite_id == 'live-all' + shell: bash + run: | + set -euo pipefail + if ! command -v ffmpeg >/dev/null 2>&1; then + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ffmpeg + fi + ffmpeg -version | head -1 + - name: Configure suite-specific env shell: bash run: | diff --git a/extensions/github-copilot/connection-bound-ids.live.test.ts b/extensions/github-copilot/connection-bound-ids.live.test.ts index 881d1e8c73e..a2324f127b3 100644 --- a/extensions/github-copilot/connection-bound-ids.live.test.ts +++ b/extensions/github-copilot/connection-bound-ids.live.test.ts @@ -145,7 +145,8 @@ describeLive("github-copilot connection-bound Responses IDs live", () => { logProgress("start"); const candidates = await resolveGithubTokenCandidates(); if (candidates.length === 0) { - throw new Error("No GitHub Copilot token found in env or auth profile"); + logProgress("skip (no GitHub Copilot token found in env or auth profile)"); + return; } let token: CopilotApiToken | undefined; diff --git a/extensions/moonshot/moonshot.live.test.ts b/extensions/moonshot/moonshot.live.test.ts index a3022996c29..dcd0eca70fd 100644 --- a/extensions/moonshot/moonshot.live.test.ts +++ b/extensions/moonshot/moonshot.live.test.ts @@ -11,7 +11,7 @@ describeLive("moonshot plugin live", () => { const provider = createKimiWebSearchProvider(); const tool = provider.createTool?.({ config: {}, - searchConfig: { kimi: { apiKey: KIMI_SEARCH_KEY }, cacheTtlMinutes: 0 }, + searchConfig: { kimi: { apiKey: KIMI_SEARCH_KEY }, cacheTtlMinutes: 0, timeoutSeconds: 90 }, } as never); const result = await tool?.execute({ query: "OpenClaw GitHub", count: 1 }); diff --git a/src/gateway/gateway-models.profiles.live.test.ts b/src/gateway/gateway-models.profiles.live.test.ts index 7edea9a02d3..0a7c5a23405 100644 --- a/src/gateway/gateway-models.profiles.live.test.ts +++ b/src/gateway/gateway-models.profiles.live.test.ts @@ -82,6 +82,8 @@ const GATEWAY_LIVE_STRIP_SCAFFOLDING_MODEL_KEYS = new Set([ "openai/gpt-5.4-pro", ]); const GATEWAY_LIVE_EXEC_READ_NONCE_MISS_SKIP_MODEL_KEYS = new Set([ + "fireworks/accounts/fireworks/models/glm-5", + "fireworks/accounts/fireworks/routers/kimi-k2p5-turbo", "google/gemini-3.1-flash-lite-preview", ]); const GATEWAY_LIVE_TOOL_NONCE_MISS_SKIP_MODEL_KEYS = new Set(["google/gemini-3-flash-preview"]); @@ -494,6 +496,17 @@ describe("shouldSkipExecReadNonceMissForLiveModel", () => { expect(shouldSkipExecReadNonceMissForLiveModel("google/gemini-3.1-flash-lite")).toBe(true); expect(shouldSkipExecReadNonceMissForLiveModel("google/gemini-3.1-flash-preview")).toBe(false); }); + + it("matches hosted Fireworks models that execute but miss readback nonces", () => { + expect( + shouldSkipExecReadNonceMissForLiveModel("fireworks/accounts/fireworks/models/glm-5"), + ).toBe(true); + expect( + shouldSkipExecReadNonceMissForLiveModel( + "fireworks/accounts/fireworks/routers/kimi-k2p5-turbo", + ), + ).toBe(true); + }); }); describe("resolveGatewayLiveModelTimeoutMs", () => {