From b65946b0448247e30cd910f431bdcbac8e5f0b27 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 2 May 2026 09:23:29 +0100 Subject: [PATCH] ci: keep release package metadata --- .github/workflows/openclaw-release-checks.yml | 4 +++- .../gateway-codex-harness.live-helpers.test.ts | 16 ++++++++++++++++ .../gateway-codex-harness.live-helpers.ts | 5 ++++- test/scripts/package-acceptance-workflow.test.ts | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openclaw-release-checks.yml b/.github/workflows/openclaw-release-checks.yml index c21464fb02a..52f1f074a02 100644 --- a/.github/workflows/openclaw-release-checks.yml +++ b/.github/workflows/openclaw-release-checks.yml @@ -303,7 +303,9 @@ jobs: uses: actions/upload-artifact@v7 with: name: release-package-under-test - path: .artifacts/docker-e2e-package/openclaw-current.tgz + path: | + .artifacts/docker-e2e-package/openclaw-current.tgz + .artifacts/docker-e2e-package/package-candidate.json retention-days: 14 if-no-files-found: error diff --git a/src/gateway/gateway-codex-harness.live-helpers.test.ts b/src/gateway/gateway-codex-harness.live-helpers.test.ts index 80259d7bdbd..0243c0ab52c 100644 --- a/src/gateway/gateway-codex-harness.live-helpers.test.ts +++ b/src/gateway/gateway-codex-harness.live-helpers.test.ts @@ -163,6 +163,22 @@ describe("gateway codex harness live helpers", () => { expect(isExpectedCodexModelsCommandText(text)).toBe(true); }); + it("accepts the singular Codex agent model list from the live harness", () => { + const text = [ + "Available Codex agent model:", + "", + "- `dev`: `openai/gpt-5.5`", + "- Runtime: `codex`", + "- Fallback: `none`", + "- Configured override: `false`", + ].join("\n"); + + expect( + EXPECTED_CODEX_MODELS_COMMAND_TEXT.some((expectedText) => text.includes(expectedText)), + ).toBe(true); + expect(isExpectedCodexModelsCommandText(text)).toBe(true); + }); + it("accepts sandbox namespace failures with current-session model fallback", () => { const text = [ "I can’t enumerate `/codex models` from this sandbox because the local `codex` CLI fails to start here with a user-namespace restriction (`bwrap: No permissions to create a new namespace`).", diff --git a/src/gateway/gateway-codex-harness.live-helpers.ts b/src/gateway/gateway-codex-harness.live-helpers.ts index 62a3b378a69..ef879cb34a2 100644 --- a/src/gateway/gateway-codex-harness.live-helpers.ts +++ b/src/gateway/gateway-codex-harness.live-helpers.ts @@ -1,6 +1,7 @@ export const EXPECTED_CODEX_MODELS_COMMAND_TEXT = [ "Codex models:", "Available Codex models", + "Available Codex agent model", "Available Codex agent models", "Available models:", "Available models, local cache:", @@ -194,6 +195,7 @@ export function isExpectedCodexModelsCommandText(text: string): boolean { const mentionsVisibleOptions = normalized.includes("visible options in this session:") || normalized.includes("visible options:") || + normalized.includes("available codex agent model:") || normalized.includes("available codex agent models:") || normalized.includes("available model overrides listed in this session:") || normalized.includes("available model overrides shown in this session:") || @@ -216,7 +218,8 @@ export function isExpectedCodexModelsCommandText(text: string): boolean { normalized.includes("available agent ids in this session:") && (text.includes("`openai/") || text.includes("`codex/")); const isCodexAgentModelSummary = - normalized.includes("available codex agent models:") && + (normalized.includes("available codex agent model:") || + normalized.includes("available codex agent models:")) && (text.includes("`openai/") || text.includes("`codex/")); const isAvailableHereModelSummary = normalized.includes("available here:") && diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index 7f9b61f41d2..f262dc82acd 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -458,6 +458,7 @@ describe("package artifact reuse", () => { expect(workflow).toContain("include_release_path_suites: true"); expect(workflow).toContain("uses: ./.github/workflows/package-acceptance.yml"); expect(workflow).toContain("source: artifact"); + expect(workflow).toContain(".artifacts/docker-e2e-package/package-candidate.json"); expect(workflow).toContain( "artifact_name: ${{ needs.prepare_release_package.outputs.artifact_name }}", );