Skip to content

Commit 454e166

Browse files
authored
chore(kiloclaw): update runtime dependencies (#3002)
* chore(kiloclaw): update runtime dependencies * chore(kiloclaw): update OpenClaw to 2026.4.23 (#3003)
1 parent c126f44 commit 454e166

14 files changed

Lines changed: 84 additions & 43 deletions

File tree

apps/web/src/app/(app)/claw/components/changelog-data.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ export type ChangelogEntry = {
1010

1111
// Newest entries first. Developers add new entries to the top of this array.
1212
export const CHANGELOG_ENTRIES: ChangelogEntry[] = [
13+
{
14+
date: '2026-05-01',
15+
description: 'Updated OpenClaw to 2026.4.23.',
16+
category: 'feature',
17+
deployHint: 'redeploy_suggested',
18+
},
1319
{
1420
date: '2026-04-28',
1521
description:

services/kiloclaw/.dev.vars.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ FLY_IMAGE_DIGEST=
119119
# Used by the worker to self-register the version → image tag mapping in KV,
120120
# enabling per-user version tracking. Without this, version tracking fields
121121
# will be null and instances fall back to FLY_IMAGE_TAG directly.
122-
OPENCLAW_VERSION=2026.4.15
122+
OPENCLAW_VERSION=2026.4.23
123123

124124
# Legacy fallback for existing instances without per-user apps.
125125
# New instances get per-user apps (acct-{hash}) created automatically.

services/kiloclaw/Dockerfile

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
ARG CONTROLLER_COMMIT=unknown
33
ARG CONTROLLER_CACHE_BUST=1
44

5-
FROM debian:bookworm-slim AS runtime
5+
FROM debian:trixie-slim AS runtime
66

77
# Install Node.js 24 (required by OpenClaw)
8-
ENV NODE_VERSION=24.14.1
8+
ENV NODE_VERSION=24.15.0
99
RUN apt-get update \
1010
&& apt-get install -y --no-install-recommends \
1111
ca-certificates curl gnupg git xz-utils unzip jq ripgrep rsync zstd \
@@ -55,7 +55,7 @@ RUN npm install -g pnpm
5555
# Patch: bump model discovery timeout from 5s to 60s — shared-cpu machines
5656
# under boot load routinely need 27-35s for the first TLS+fetch to complete.
5757
# Remove this sed patch once openclaw exposes a configurable timeout.
58-
RUN npm install -g openclaw@2026.4.15 \
58+
RUN npm install -g openclaw@2026.4.23 \
5959
&& OC_DIST=/usr/local/lib/node_modules/openclaw/dist \
6060
&& FOUND_FILES=$(find "$OC_DIST" -name 'provider-models-*.js' | wc -l | tr -d ' ') \
6161
&& if [ "$FOUND_FILES" -eq 0 ]; then echo "ERROR: provider-models-*.js not found in openclaw dist" >&2; exit 1; fi \
@@ -105,10 +105,10 @@ RUN npm install -g github:Kilo-Org/openclaw-channel-streamchat#fix/plugin-name-r
105105
RUN npm install -g @steipete/summarize@0.12.0
106106

107107
# Install Kilo CLI (agentic coding assistant for the terminal)
108-
RUN npm install -g @kilocode/cli@7.2.22
108+
RUN npm install -g @kilocode/cli@7.2.31
109109

110110
# Install Go (available at runtime for users to `go install` additional tools)
111-
ENV GO_VERSION=1.26.0
111+
ENV GO_VERSION=1.26.2
112112
RUN ARCH="$(dpkg --print-architecture)" \
113113
&& curl -fsSL https://dl.google.com/go/go${GO_VERSION}.linux-${ARCH}.tar.gz -o /tmp/go.tar.gz \
114114
&& EXPECTED_SHA256="$(curl -fsSL https://dl.google.com/go/go${GO_VERSION}.linux-${ARCH}.tar.gz.sha256)" \
@@ -122,11 +122,13 @@ RUN ARCH="$(dpkg --print-architecture)" \
122122
# so user-installed tools persist across restarts and are included in snapshots.
123123
# - npm/Node (installed to /usr/local) and apt packages (/usr/bin) are unaffected.
124124
ENV PATH="/usr/local/go/bin:/root/go/bin:$PATH"
125-
RUN GOBIN=/usr/local/bin go install github.com/steipete/gogcli/cmd/gog@v0.12.0 \
125+
RUN ARCH="$(dpkg --print-architecture)" \
126+
&& curl -fsSL "https://github.com/steipete/gogcli/releases/download/v0.14.0/gogcli_0.14.0_linux_${ARCH}.tar.gz" \
127+
| tar xz -C /usr/local/bin gog \
126128
&& mv /usr/local/bin/gog /usr/local/bin/gog.real \
127129
&& GOBIN=/usr/local/bin go install github.com/steipete/goplaces/cmd/goplaces@v0.3.0 \
128130
&& GOBIN=/usr/local/bin go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@v0.0.2 \
129-
&& GOBIN=/usr/local/bin go install github.com/xdevplatform/xurl@v1.0.3 \
131+
&& GOBIN=/usr/local/bin go install github.com/xdevplatform/xurl@v1.1.0 \
130132
&& GOBIN=/usr/local/bin go install github.com/steipete/gifgrep/cmd/gifgrep@v0.2.3 \
131133
&& go clean -cache -modcache
132134

@@ -176,11 +178,11 @@ RUN cd /tmp/kiloclaw-morning-briefing \
176178
# file. By building in a separate stage, Bun (~100MB) stays out of the
177179
# final image. Bun installed to /root/.bun/ which gets shadowed by the
178180
# Fly Volume mount at /root, so it was unreachable at runtime anyway.
179-
FROM debian:bookworm-slim AS controller-builder
181+
FROM debian:trixie-slim AS controller-builder
180182

181183
RUN apt-get update \
182184
&& apt-get install -y --no-install-recommends ca-certificates curl unzip \
183-
&& curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.4" \
185+
&& curl -fsSL https://bun.sh/install | bash -s "bun-v1.3.13" \
184186
&& rm -rf /var/lib/apt/lists/*
185187
ENV PATH="/root/.bun/bin:$PATH"
186188

@@ -226,8 +228,8 @@ RUN mkdir -p /root/.openclaw \
226228
&& mkdir -p /root/clawd/skills
227229

228230
# Copy helper scripts (used at runtime by the controller/gateway)
229-
# Build cache bust: 2026-04-24-v66-openclaw-2026.4.15-add-kilo-chat-plugin
230-
RUN echo "12"
231+
# Build cache bust: 2026-05-01-v67-openclaw-2026.4.23
232+
RUN echo "13"
231233
COPY openclaw-pairing-list.js /usr/local/bin/openclaw-pairing-list.js
232234
COPY openclaw-device-pairing-list.js /usr/local/bin/openclaw-device-pairing-list.js
233235

services/kiloclaw/Dockerfile.local

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
FROM debian:bookworm-slim AS runtime
1+
FROM debian:trixie-slim AS runtime
22

33
# Install Node.js 24 (required by OpenClaw)
4-
ENV NODE_VERSION=24.14.1
4+
ENV NODE_VERSION=24.15.0
55
RUN apt-get update \
66
&& apt-get install -y --no-install-recommends \
77
ca-certificates curl gnupg git xz-utils unzip jq ripgrep rsync zstd \
@@ -59,10 +59,10 @@ RUN npm install -g github:Kilo-Org/openclaw-channel-streamchat#fix/plugin-name-r
5959
RUN npm install -g @steipete/summarize@0.12.0
6060

6161
# Install Kilo CLI (agentic coding assistant for the terminal)
62-
RUN npm install -g @kilocode/cli@7.2.22
62+
RUN npm install -g @kilocode/cli@7.2.31
6363

6464
# Install Go (available at runtime for users to `go install` additional tools)
65-
ENV GO_VERSION=1.26.0
65+
ENV GO_VERSION=1.26.2
6666
RUN ARCH="$(dpkg --print-architecture)" \
6767
&& curl -fsSL https://dl.google.com/go/go${GO_VERSION}.linux-${ARCH}.tar.gz -o /tmp/go.tar.gz \
6868
&& EXPECTED_SHA256="$(curl -fsSL https://dl.google.com/go/go${GO_VERSION}.linux-${ARCH}.tar.gz.sha256)" \
@@ -76,11 +76,13 @@ RUN ARCH="$(dpkg --print-architecture)" \
7676
# so user-installed tools persist across restarts and are included in snapshots.
7777
# - npm/Node (installed to /usr/local) and apt packages (/usr/bin) are unaffected.
7878
ENV PATH="/usr/local/go/bin:/root/go/bin:$PATH"
79-
RUN GOBIN=/usr/local/bin go install github.com/steipete/gogcli/cmd/gog@v0.12.0 \
79+
RUN ARCH="$(dpkg --print-architecture)" \
80+
&& curl -fsSL "https://github.com/steipete/gogcli/releases/download/v0.14.0/gogcli_0.14.0_linux_${ARCH}.tar.gz" \
81+
| tar xz -C /usr/local/bin gog \
8082
&& mv /usr/local/bin/gog /usr/local/bin/gog.real \
8183
&& GOBIN=/usr/local/bin go install github.com/steipete/goplaces/cmd/goplaces@v0.3.0 \
8284
&& GOBIN=/usr/local/bin go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@v0.0.2 \
83-
&& GOBIN=/usr/local/bin go install github.com/xdevplatform/xurl@v1.0.3 \
85+
&& GOBIN=/usr/local/bin go install github.com/xdevplatform/xurl@v1.1.0 \
8486
&& GOBIN=/usr/local/bin go install github.com/steipete/gifgrep/cmd/gifgrep@v0.2.3 \
8587
&& go clean -cache -modcache
8688

@@ -90,7 +92,7 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/b
9092
&& uv --version
9193

9294
# Install pinned Bun (build-time only) and compile the controller bundle.
93-
ARG BUN_VERSION=1.2.4
95+
ARG BUN_VERSION=1.3.13
9496
RUN curl -fsSL https://bun.sh/install | bash -s "bun-v${BUN_VERSION}"
9597
ENV PATH="/root/.bun/bin:$PATH"
9698

services/kiloclaw/controller/src/config-writer.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,7 @@ describe('generateBaseConfig', () => {
955955
expect(config.hooks.enabled).toBe(true);
956956
expect(config.hooks.token).toBe('test-hooks-token');
957957
expect(config.hooks.path).toBe('/hooks');
958+
expect(config.hooks.allowedSessionKeyPrefixes).toEqual(['hook:', 'inbound-email:']);
958959
expect(config.hooks.presets).toBeUndefined();
959960
expect(config.hooks.mappings).toContainEqual({
960961
id: 'cloudflare-email-inbound',
@@ -1018,6 +1019,18 @@ describe('generateBaseConfig', () => {
10181019
expect(config.hooks.mappings).toContainEqual(
10191020
expect.objectContaining({ id: 'cloudflare-email-inbound', wakeMode: 'now' })
10201021
);
1022+
expect(config.hooks.allowedSessionKeyPrefixes).toEqual(['hook:', 'inbound-email:']);
1023+
});
1024+
1025+
it('preserves existing hook session key prefixes without duplicating inbound email', () => {
1026+
const existing = JSON.stringify({
1027+
hooks: { allowedSessionKeyPrefixes: ['custom:', 'hook:', 'inbound-email:'] },
1028+
});
1029+
const { deps } = fakeDeps(existing);
1030+
const env = { ...minimalEnv(), KILOCLAW_HOOKS_TOKEN: 'test-hooks-token' };
1031+
const config = generateBaseConfig(env, '/tmp/openclaw.json', deps);
1032+
1033+
expect(config.hooks.allowedSessionKeyPrefixes).toEqual(['custom:', 'hook:', 'inbound-email:']);
10211034
});
10221035

10231036
it('adds gmail preset when Gog credentials are configured', () => {

services/kiloclaw/controller/src/config-writer.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ type ConfigObject = Record<string, any>;
105105
type EnvLike = Record<string, string | undefined>;
106106

107107
const INBOUND_EMAIL_HOOK_ID = 'cloudflare-email-inbound';
108+
const DEFAULT_HOOK_SESSION_KEY_PREFIX = 'hook:';
109+
const INBOUND_EMAIL_SESSION_KEY_PREFIX = 'inbound-email:';
108110

109111
function migrateHookMapping(mapping: ConfigObject): ConfigObject {
110112
if (mapping.id === INBOUND_EMAIL_HOOK_ID) {
@@ -541,6 +543,23 @@ export function generateBaseConfig(
541543
config.hooks.enabled = true;
542544
config.hooks.token = env.KILOCLAW_HOOKS_TOKEN;
543545
config.hooks.path = '/hooks';
546+
config.hooks.allowedSessionKeyPrefixes = Array.isArray(config.hooks.allowedSessionKeyPrefixes)
547+
? config.hooks.allowedSessionKeyPrefixes
548+
: [];
549+
if (
550+
!(config.hooks.allowedSessionKeyPrefixes as string[]).includes(
551+
DEFAULT_HOOK_SESSION_KEY_PREFIX
552+
)
553+
) {
554+
(config.hooks.allowedSessionKeyPrefixes as string[]).push(DEFAULT_HOOK_SESSION_KEY_PREFIX);
555+
}
556+
if (
557+
!(config.hooks.allowedSessionKeyPrefixes as string[]).includes(
558+
INBOUND_EMAIL_SESSION_KEY_PREFIX
559+
)
560+
) {
561+
(config.hooks.allowedSessionKeyPrefixes as string[]).push(INBOUND_EMAIL_SESSION_KEY_PREFIX);
562+
}
544563

545564
config.hooks.mappings = Array.isArray(config.hooks.mappings)
546565
? config.hooks.mappings.map((mapping: ConfigObject) => migrateHookMapping(mapping))

services/kiloclaw/controller/src/pairing-cache.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,9 @@ export const DEBOUNCE_DELAY_MS = 2_000;
7272

7373
export const FAILURE_RETRY_BASE_MS = 30_000;
7474
export const FAILURE_RETRY_MAX_MS = 300_000;
75-
// TEMPORARY: bumped from 45_000 to 180_000 because openclaw 2026.4.15 CLI
76-
// startup takes ~65s (CPU profile shows ~55% in jiti normalizeAliases/createJiti
77-
// from per-plugin loader churn). Revert to 45_000 once openclaw upstream
78-
// reduces startup time. Tracking: <openclaw issue link TBD>.
75+
// TEMPORARY: bumped from 45_000 to 180_000 because OpenClaw CLI startup can
76+
// exceed 60s on shared-cpu instances. Revert to 45_000 once upstream startup
77+
// is consistently below the old timeout on full KiloClaw images.
7978
export const APPROVE_TIMEOUT_MS = 180_000;
8079
export const CONFIG_PATH = '/root/.openclaw/openclaw.json';
8180

services/kiloclaw/e2e/docker-image-testing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ docker rm kiloclaw-gateway
140140

141141
```bash
142142
# Check versions
143-
docker run --rm kiloclaw:test node --version # v24.14.1
144-
docker run --rm kiloclaw:test openclaw --version # 2026.4.15
143+
docker run --rm kiloclaw:test node --version # v24.15.0
144+
docker run --rm kiloclaw:test openclaw --version # 2026.4.23
145145

146146
# Check directories
147147
docker run --rm kiloclaw:test ls -la /root/.openclaw

services/kiloclaw/google-setup/Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:24-slim
1+
FROM node:24-trixie-slim
22

33
# Install dependencies for gcloud CLI + readline for interactive prompts
44
RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -16,10 +16,10 @@ RUN curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dea
1616
&& apt-get update && apt-get install -y --no-install-recommends google-cloud-cli \
1717
&& rm -rf /var/lib/apt/lists/*
1818

19-
# Install gogcli v0.12.0 pre-built binary (arch-aware)
19+
# Install gogcli v0.14.0 pre-built binary (arch-aware)
2020
ARG TARGETARCH
2121
RUN GOARCH=$([ "$TARGETARCH" = "arm64" ] && echo "arm64" || echo "amd64") \
22-
&& curl -fsSL "https://github.com/steipete/gogcli/releases/download/v0.12.0/gogcli_0.12.0_linux_${GOARCH}.tar.gz" \
22+
&& curl -fsSL "https://github.com/steipete/gogcli/releases/download/v0.14.0/gogcli_0.14.0_linux_${GOARCH}.tar.gz" \
2323
| tar xz -C /usr/local/bin gog \
2424
&& chmod +x /usr/local/bin/gog
2525

services/kiloclaw/plugins/kilo-chat/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"test": "vitest run"
2929
},
3030
"peerDependencies": {
31-
"openclaw": "2026.4.15"
31+
"openclaw": "2026.4.23"
3232
},
3333
"devDependencies": {
3434
"esbuild": "^0.25.2",

0 commit comments

Comments
 (0)