diff --git a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml index 4a9f0d6cb2a..00a9ad0d886 100644 --- a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml +++ b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml @@ -390,7 +390,6 @@ jobs: if [[ "$LIVE_MODELS_ONLY" != "true" ]]; then add_suite live-cache - add_suite openai-ws-stream-live-e2e add_profile_suite native-live-src-agents "stable full" add_profile_suite native-live-src-gateway-core "minimum stable full" @@ -531,7 +530,7 @@ jobs: validate_special_e2e: needs: validate_selected_ref - if: (inputs.include_repo_e2e || (inputs.include_live_suites && !inputs.live_models_only)) && (inputs.live_suite_filter == '' || inputs.live_suite_filter == 'openshell-e2e' || inputs.live_suite_filter == 'openai-ws-stream-live-e2e') + if: inputs.include_repo_e2e && (inputs.live_suite_filter == '' || inputs.live_suite_filter == 'openshell-e2e') runs-on: blacksmith-8vcpu-ubuntu-2404 timeout-minutes: ${{ matrix.timeout_minutes }} strategy: @@ -544,12 +543,6 @@ jobs: timeout_minutes: 120 requires_repo_e2e: true requires_live_suites: false - - suite_id: openai-ws-stream-live-e2e - label: OpenAI WebSocket live E2E - command: pnpm test:e2e src/agents/openai-ws-stream.e2e.test.ts - timeout_minutes: 90 - requires_repo_e2e: false - requires_live_suites: true env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENCLAW_E2E_WORKERS: "1" @@ -583,9 +576,7 @@ jobs: run: | set -euo pipefail case "${{ matrix.suite_id }}" in - openai-ws-stream-live-e2e) - echo "OPENAI_LIVE_TEST=1" >> "$GITHUB_ENV" - echo "OPENCLAW_LIVE_TEST=1" >> "$GITHUB_ENV" + openshell-e2e) ;; esac @@ -595,11 +586,7 @@ jobs: run: | set -euo pipefail case "${{ matrix.suite_id }}" in - openai-ws-stream-live-e2e) - [[ -n "${OPENAI_API_KEY:-}" ]] || { - echo "OPENAI_API_KEY is required for the OpenAI WebSocket live E2E suite." >&2 - exit 1 - } + openshell-e2e) ;; esac diff --git a/apps/macos/Sources/OpenClaw/OnboardingWizard.swift b/apps/macos/Sources/OpenClaw/OnboardingWizard.swift index 75b9522a4d1..0b6df7ddda3 100644 --- a/apps/macos/Sources/OpenClaw/OnboardingWizard.swift +++ b/apps/macos/Sources/OpenClaw/OnboardingWizard.swift @@ -145,10 +145,7 @@ final class OnboardingWizardModel { self.sessionId = res.sessionid self.status = wizardStatusString(res.status) ?? (res.done ? "done" : "running") self.errorMessage = res.error - self.currentStep = decodeWizardStep(res.step) - if self.currentStep == nil, res.step != nil { - onboardingWizardLogger.error("wizard step decode failed") - } + self.currentStep = res.step if res.done { self.currentStep = nil } self.restartAttempts = 0 } @@ -157,10 +154,7 @@ final class OnboardingWizardModel { let status = wizardStatusString(res.status) self.status = status ?? self.status self.errorMessage = res.error - self.currentStep = decodeWizardStep(res.step) - if self.currentStep == nil, res.step != nil { - onboardingWizardLogger.error("wizard step decode failed") - } + self.currentStep = res.step if res.done { self.currentStep = nil } if res.done || status == "done" || status == "cancelled" || status == "error" { self.sessionId = nil diff --git a/src/media/audio-transcode.test.ts b/src/media/audio-transcode.test.ts index be57e3f620f..04bd5b49a19 100644 --- a/src/media/audio-transcode.test.ts +++ b/src/media/audio-transcode.test.ts @@ -63,6 +63,8 @@ describe("transcodeAudioBufferToOpus", () => { "48000", "-ac", "1", + "-f", + "opus", capturedOutputPath, ], { timeoutMs: 1234 }, diff --git a/src/media/audio-transcode.ts b/src/media/audio-transcode.ts index bd838ca0d3e..f67d702acc7 100644 --- a/src/media/audio-transcode.ts +++ b/src/media/audio-transcode.ts @@ -85,6 +85,8 @@ export async function transcodeAudioBufferToOpus(params: { String(params.sampleRateHz ?? DEFAULT_OPUS_SAMPLE_RATE_HZ), "-ac", String(params.channels ?? DEFAULT_OPUS_CHANNELS), + "-f", + "opus", outputPath, ], { timeoutMs: params.timeoutMs }, diff --git a/src/plugins/channel-plugin-ids.test.ts b/src/plugins/channel-plugin-ids.test.ts index 5bb0007714f..23c9d9931be 100644 --- a/src/plugins/channel-plugin-ids.test.ts +++ b/src/plugins/channel-plugin-ids.test.ts @@ -429,6 +429,13 @@ function filterManifestRegistryForInstalledIndex(params: { }; } +function createPluginPlanningTestEnv(overrides: NodeJS.ProcessEnv = {}): NodeJS.ProcessEnv { + return { + OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY: "1", + ...overrides, + }; +} + function useManifestRegistryFixture( registry: PluginManifestRegistry = createManifestRegistryFixture(), ) { @@ -451,7 +458,7 @@ function expectStartupPluginIds(params: { ? { activationSourceConfig: params.activationSourceConfig } : {}), workspaceDir: "/tmp", - env: params.env ?? process.env, + env: createPluginPlanningTestEnv(params.env), }), ).toEqual(params.expected); expect(loadPluginManifestRegistry).toHaveBeenCalled(); @@ -1156,18 +1163,18 @@ describe("resolveGatewayStartupPluginIds", () => { expectStartupPluginIdsCase({ config, - env: { + env: createPluginPlanningTestEnv({ DEMO_CHANNEL_ANYTHING: "1", - } as NodeJS.ProcessEnv, + }), expected: ["demo-channel", "browser", "memory-core"], }); expect( resolveConfiguredDeferredChannelPluginIds({ config, workspaceDir: "/tmp", - env: { + env: createPluginPlanningTestEnv({ DEMO_CHANNEL_ANYTHING: "1", - } as NodeJS.ProcessEnv, + }), }), ).toStrictEqual([]); }); @@ -1187,7 +1194,7 @@ describe("resolveGatewayStartupPluginIds", () => { }, } as OpenClawConfig, workspaceDir: "/tmp", - env: {}, + env: createPluginPlanningTestEnv(), }), ).toEqual(["workspace-demo-channel-plugin"]); }); @@ -1204,7 +1211,7 @@ describe("resolveGatewayStartupPluginIds", () => { allow: ["browser"], }, } as OpenClawConfig, - env: {}, + env: createPluginPlanningTestEnv(), expected: ["demo-channel", "browser"], }); }); @@ -1219,7 +1226,7 @@ describe("resolveGatewayStartupPluginIds", () => { }, }, } as OpenClawConfig, - env: {}, + env: createPluginPlanningTestEnv(), expected: ["browser", "memory-core"], }); }); @@ -1235,9 +1242,9 @@ describe("resolveGatewayStartupPluginIds", () => { expectStartupPluginIdsCase({ config: {} as OpenClawConfig, - env: { + env: createPluginPlanningTestEnv({ OPENCLAW_STATE_DIR: "/tmp/openclaw-with-persisted-demo-channel", - } as NodeJS.ProcessEnv, + }), expected: ["browser", "memory-core"], }); }); @@ -1260,9 +1267,9 @@ describe("resolveGatewayStartupPluginIds", () => { }, } as OpenClawConfig, workspaceDir: "/tmp", - env: { + env: createPluginPlanningTestEnv({ OPENCLAW_STATE_DIR: "/tmp/openclaw-with-persisted-demo-channel", - } as NodeJS.ProcessEnv, + }), }), ).toStrictEqual([]); }); @@ -1282,7 +1289,7 @@ describe("resolveGatewayStartupPluginIds", () => { }, } as OpenClawConfig, workspaceDir: "/tmp", - env: {}, + env: createPluginPlanningTestEnv(), }); expect(plan.channelPluginIds).toContain("demo-channel"); @@ -1309,7 +1316,7 @@ describe("resolveGatewayStartupPluginIds", () => { }, } as OpenClawConfig, workspaceDir: "/tmp", - env: {}, + env: createPluginPlanningTestEnv(), }), ).toStrictEqual([]); }); diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index cd60967be8b..51f74a32149 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -359,6 +359,8 @@ describe("package artifact reuse", () => { expect(workflow).toContain( "inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id", ); + expect(workflow).not.toContain("openai-ws-stream-live-e2e"); + expect(workflow).not.toContain("src/agents/openai-ws-stream.e2e.test.ts"); expect(workflow).toContain("suite_id: live-gateway-advisory-docker-deepseek-fireworks"); expect(workflow).toContain("suite_id: live-gateway-advisory-docker-opencode-openrouter"); expect(workflow).toContain("suite_id: live-gateway-advisory-docker-xai-zai");