Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ RUN printf '%s\n' \
# OpenClaw version: change the OPENCLAW_VERSION ARG default so CI rebuilds
# the base image on push to main, or use workflow_dispatch on base-image.yaml
# with the openclaw_version input for a one-off build without editing this file.
ARG OPENCLAW_VERSION=2026.4.2
ARG OPENCLAW_VERSION=2026.4.9

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

Expand Down
2 changes: 1 addition & 1 deletion agents/openclaw/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ homepage: "https://openclaw.ai"
install_method: npm # npm install -g openclaw@<version>
binary_path: /usr/local/bin/openclaw
version_command: "openclaw --version"
expected_version: "2026.4.2"
expected_version: "2026.4.9"
gateway_command: "openclaw gateway run"

# ── Health probe ────────────────────────────────────────────────
Expand Down
2 changes: 1 addition & 1 deletion nemoclaw-blueprint/blueprint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
version: "0.1.0"
min_openshell_version: "0.0.32"
max_openshell_version: "0.0.36"
min_openclaw_version: "2026.4.2"
min_openclaw_version: "2026.4.9"
# Mirrors the components.sandbox.image manifest digest below. Lets a
# downstream consumer (or release tooling) verify the blueprint declares
# a specific sandbox image without parsing the components tree, and
Expand Down
22 changes: 11 additions & 11 deletions src/lib/sandbox-version.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ vi.mock("./agent-defs.js", () => ({
name,
displayName: name === "openclaw" ? "OpenClaw" : "Hermes Agent",
versionCommand: name === "openclaw" ? "openclaw --version" : "hermes --version",
expectedVersion: name === "openclaw" ? "2026.4.2" : "2026.4.8",
expectedVersion: name === "openclaw" ? "2026.4.9" : "2026.4.9",
stateDirs: [],
configPaths: { writableDir: "/sandbox/.openclaw-data" },
})),
Expand Down Expand Up @@ -76,12 +76,12 @@ describe("checkAgentVersion", () => {
registry.registerSandbox({
name: "test-sb",
agent: null,
agentVersion: "2026.4.2",
agentVersion: "2026.4.9",
});

const result = checkAgentVersion("test-sb");
expect(result.detectionMethod).toBe("registry");
expect(result.sandboxVersion).toBe("2026.4.2");
expect(result.sandboxVersion).toBe("2026.4.9");
expect(result.isStale).toBe(false);
});

Expand All @@ -102,7 +102,7 @@ describe("checkAgentVersion", () => {
registry.registerSandbox({
name: "test-sb",
agent: null,
agentVersion: "2026.4.2",
agentVersion: "2026.4.9",
});

const result = checkAgentVersion("test-sb");
Expand All @@ -119,7 +119,7 @@ describe("checkAgentVersion", () => {

vi.mocked(spawnSync).mockReturnValue({
status: 0,
stdout: "OpenClaw 2026.4.2 (abc123)\n",
stdout: "OpenClaw 2026.4.9 (abc123)\n",
stderr: "",
pid: 1234,
output: [],
Expand All @@ -128,12 +128,12 @@ describe("checkAgentVersion", () => {

const result = checkAgentVersion("test-sb");
expect(result.detectionMethod).toBe("ssh-exec");
expect(result.sandboxVersion).toBe("2026.4.2");
expect(result.sandboxVersion).toBe("2026.4.9");
expect(result.isStale).toBe(false);

// Should have cached the version in registry
const updated = registry.getSandbox("test-sb");
expect(updated?.agentVersion).toBe("2026.4.2");
expect(updated?.agentVersion).toBe("2026.4.9");
});

it("returns unavailable when SSH config fails", () => {
Expand Down Expand Up @@ -163,7 +163,7 @@ describe("checkAgentVersion", () => {

vi.mocked(spawnSync).mockReturnValue({
status: 0,
stdout: "OpenClaw 2026.4.2 (abc123)\n",
stdout: "OpenClaw 2026.4.9 (abc123)\n",
stderr: "",
pid: 1234,
output: [],
Expand All @@ -172,7 +172,7 @@ describe("checkAgentVersion", () => {

const result = checkAgentVersion("test-sb", { forceProbe: true });
expect(result.detectionMethod).toBe("ssh-exec");
expect(result.sandboxVersion).toBe("2026.4.2");
expect(result.sandboxVersion).toBe("2026.4.9");
});
});

Expand All @@ -199,14 +199,14 @@ describe("formatStalenessWarning", () => {
it("includes sandbox name, versions, and rebuild hint", () => {
const lines = formatStalenessWarning("my-sb", {
sandboxVersion: "2026.3.11",
expectedVersion: "2026.4.2",
expectedVersion: "2026.4.9",
isStale: true,
detectionMethod: "registry",
});
const joined = lines.join("\n");
expect(joined).toContain("my-sb");
expect(joined).toContain("2026.3.11");
expect(joined).toContain("2026.4.2");
expect(joined).toContain("2026.4.9");
expect(joined).toContain("rebuild");
});
});
Loading