Compare commits

...

27 Commits

Author SHA1 Message Date
Tideclaw
85f6a0741b test: mount Windows helper in Docker harness 2026-05-24 15:50:35 +00:00
Tideclaw
8959da3903 test(telegram): initialize topic cache store in context harness 2026-05-24 15:03:10 +00:00
Tideclaw
3ec4fe5123 chore: prepare alpha 2026.5.24-alpha.1
(cherry picked from commit 0dad286b1d3e82c5a2426c5300e31ee7bde12f03)
2026-05-24 14:29:03 +00:00
Tideclaw
6d8d32850e chore: refresh release generated baselines 2026-05-24 14:18:44 +00:00
Tideclaw
5f2c6d5c30 fix: avoid private sdk markers in release dist
(cherry picked from commit 25897eb9cf76a7b295ab97c3ed65f897ae3470de)
2026-05-24 14:15:39 +00:00
Tideclaw
418d620160 test(codex): widen sandbox wait timeout helper
(cherry picked from commit a0a88331c239226f42ccbc980d26000dccbc5fa7)
2026-05-24 14:15:13 +00:00
Tideclaw
44f638ab9a test(codex): allow sandbox exec startup in prerelease
(cherry picked from commit 6d15f06850)
(cherry picked from commit 8c32c3386981c832c0fb084f2a650369f3150f99)
2026-05-24 14:14:35 +00:00
Tideclaw
6cc96e1ae9 test(whatsapp): initialize inbound media runtime
(cherry picked from commit b2a4c9bd01)
(cherry picked from commit f344247e29edb69733bf082e299abdc9446cee45)
2026-05-24 14:14:14 +00:00
Tideclaw
7fbc39c228 test: align release workflow assertions
(cherry picked from commit 588ed7e2f8)
(cherry picked from commit b30f1dbc36655b6137ed236f0c761b751ef9cedd)
2026-05-24 14:14:14 +00:00
Tideclaw
36a21ca038 test: pass codex tool specs into thread payload
(cherry picked from commit 0549c14f8a0d5709a83508c8010ab0abb3bf474c)
(cherry picked from commit 79df168478)
(cherry picked from commit 1420a75c7a03570e9074f44838115020eb3fe758)
2026-05-24 14:14:14 +00:00
Tideclaw
26b27277f8 test: avoid sandbox runtime flake in codex shard
(cherry picked from commit 7bc55ae19e54466151fb0c67600cfaff1a588263)
(cherry picked from commit cb9cd23cd4)
(cherry picked from commit 2baea835aa4b702c5944bdb96b173f4c3a78530f)
2026-05-24 14:14:08 +00:00
Tideclaw
016cbd9deb test: stabilize alpha release monitor coverage
(cherry picked from commit 2187a0d3ba6498c0e65dd36b64dab2d81f2833d0)
(cherry picked from commit 4677e186b1)
(cherry picked from commit a8891a8ddfe719f5f9d439e401b66ce480b5f519)
2026-05-24 14:13:30 +00:00
Tideclaw
914f6c27ab test: stabilize alpha prerelease gates
(cherry picked from commit b4c1505822e139ce1ddb84f52eb5a527fa6b7c1d)
(cherry picked from commit 0d7e592885)
(cherry picked from commit 70fb0fa89c7976cdc8ecd76c8f95e15abe32022e)
2026-05-24 14:13:01 +00:00
Tideclaw
62f29235bf fix(codex): ensure app-server binding directories
(cherry picked from commit 0f617da61ec258be79c0e1be7673c8cbb6da6cbe)
(cherry picked from commit bb595316e3)
(cherry picked from commit c4b5bf89fc1901cca7690f99016caeaf98f11632)
2026-05-24 14:12:15 +00:00
Tideclaw
32c75c1bda test: stabilize alpha release gates
(cherry picked from commit fdf1f1773b48026ad12ff28be9cbb2c42da36d8f)
(cherry picked from commit b001d0042c)
(cherry picked from commit ddcd3603f2125edd51926085da8500539f99af20)
2026-05-24 14:12:07 +00:00
Tideclaw
5eea87f637 test: retry bundled smoke HTTP timeouts
(cherry picked from commit 52d7f5d4ccf368c5d90a7a73f3cf49e41afea859)
(cherry picked from commit 79a7272997a82e0aca80768bb881617378d838a8)
(cherry picked from commit 101d3ede60)
(cherry picked from commit f62690f5ddfbfe733637ad69fc13a891e793b053)
2026-05-24 14:11:44 +00:00
Tideclaw
338469fa11 test: satisfy bundled smoke lint
(cherry picked from commit 7d6fbd958a4cec5354c91e225979f3041fa3261d)
(cherry picked from commit 2dedd5840635bfea2ab74de923dc69037f6cf568)
(cherry picked from commit c5e9b98608)
(cherry picked from commit 31e9cd8b45eaaffd6dd171f7019b7c7fec8d6621)
2026-05-24 14:11:43 +00:00
Tideclaw
6415fc4bf2 test: retry bundled plugin runtime HTTP probes
(cherry picked from commit 3b7932412a4f03977a6409fba61889020ecf081f)
(cherry picked from commit cbc3bd0430b88ae687a37b577577e5e0b9a6fd74)
(cherry picked from commit a28590411a)
(cherry picked from commit 035daf3361916ba700a8292fd127de33b4b7946f)
2026-05-24 14:11:43 +00:00
Tideclaw
70b6d87bdb test: stabilize alpha plugin prerelease
(cherry picked from commit 2edb34c466949de8afb6a9722e6c695267ec6b57)
(cherry picked from commit 06167870b0ffe46787f16423eee08d397973244c)
(cherry picked from commit f016e1013e)
(cherry picked from commit 2c2c6246e1666e7241af41b9b627a6faaefb680b)
2026-05-24 14:11:43 +00:00
Tideclaw
65e0e27b20 test(whatsapp): align setup and login coverage expectations
(cherry picked from commit a1a499ee6a)
(cherry picked from commit d49d303ec43decfb3472157950adda35ba21039a)
(cherry picked from commit eb3abe53cdb0ae4f1835c361b73bebf5f64aafcf)
(cherry picked from commit 792c4f5a9d)
(cherry picked from commit 1a01ee6e5ce364531bead01c75626a80854698fc)
2026-05-24 14:11:43 +00:00
Tideclaw
4a80ef242e fix: stabilize plugin prerelease checks
(cherry picked from commit f5611643f6b0ec5bdec29458e61bc67386c5c983)
(cherry picked from commit d218320dfd)
(cherry picked from commit df6e56d0945aed0b3f05b1e5423f0d7c4e710d5b)
(cherry picked from commit ce6c14afb59398ee7994a5ce88c8b18b7dd977da)
(cherry picked from commit 2019df7c86)
(cherry picked from commit 51bc8dc934fb34d8d16a42ff11c2ba314c9d0616)
2026-05-24 14:11:43 +00:00
Tideclaw
2a3ffd05ff fix: reset macos swift build cache
(cherry picked from commit 3f75f1a621bf1fe84bf03988a2526b6492ff7ef8)
(cherry picked from commit 07fac81f60)
(cherry picked from commit a36a8c0d79914a1887f34555b1e2f8472d6ab474)
(cherry picked from commit d9748e848d1aa96c9339aa6e9b90ceb4be60a63c)
(cherry picked from commit f61d38ea1d)
(cherry picked from commit 57eb236afb94b6814c804708729fc44722841fc5)
2026-05-24 14:11:43 +00:00
Tideclaw
90b2590f6f fix: clear swiftpm sparkle artifact cache
(cherry picked from commit b517edc45d99fac85f31f69bee5918688da86ec2)
(cherry picked from commit 97482aecfe)
(cherry picked from commit 8e1dbf3e4733f17b991a1000560db0e60ae5d95a)
(cherry picked from commit 1c639d6f384ca9f204f362a75ea999f134bdde4c)
(cherry picked from commit 8f03dfb07f)
(cherry picked from commit eb015b1ad8a912c81aebed14346b2667a2659fb4)
2026-05-24 14:11:43 +00:00
Tideclaw
59c99237b1 fix: repair macos swift artifact cache
(cherry picked from commit f790b3beb10f026102e9a75daa1b064f5e6a5976)
(cherry picked from commit ad6944e07d)
(cherry picked from commit 11e67682cd690f663938af2de3464a34946f5af4)
(cherry picked from commit 8c4b8e98a9bd9ec679c433408aa533901a0f6a98)
(cherry picked from commit af34d10c04)
(cherry picked from commit 69d937369a98cfc81694be071513d1c81a702fe4)
2026-05-24 14:11:43 +00:00
Tideclaw
4e1e4c537b fix: align plugin prerelease guardrails
(cherry picked from commit ca8c7224a3bf4165723755358f579098cce193bd)
(cherry picked from commit ff12508123)
(cherry picked from commit a8ce81c77d9981ed7cb76249c2791eaf8b9d1bbf)
(cherry picked from commit 873a71b7fa8bb05e05efee29913b4f7e5ac31c51)
(cherry picked from commit 3c2c30c1fa)
(cherry picked from commit 6a6bd03e7d7e9f5a3676ef9bdd57b76cc989f89f)
2026-05-24 14:11:43 +00:00
Tideclaw
1942787a97 test: align fs-safe dependency contracts
(cherry picked from commit b13b13f1d012b434e8c511591b4fa790a5190c68)
(cherry picked from commit 97e7fe571b)
(cherry picked from commit 6f4db9ed19ad9426dd8834bea16714a9a55c4ed6)
(cherry picked from commit 14ac8eb36213449a94c9445e6d01185a4cf335b0)
(cherry picked from commit 32d1cf6b51)
(cherry picked from commit 528372d27631f36dc411b858b281753726bce898)
2026-05-24 14:11:43 +00:00
Tideclaw
9aa2fdd8a9 fix: align release dependency guardrails
(cherry picked from commit 2a83073226a1c56bd3fad5876be840822358de32)
(cherry picked from commit a1d32c384b)
(cherry picked from commit c82c3f47a1327ff7ba32c2c46f993b00f877d48c)
(cherry picked from commit 069fbfc9fc3561de1b7bb3b2a44b1b740db1a783)
(cherry picked from commit 694dbbbd61)
(cherry picked from commit f15a5b2093cdb3e26dd802d978e3372730d06ab0)
2026-05-24 14:11:43 +00:00
191 changed files with 739 additions and 414 deletions

View File

@@ -1624,10 +1624,23 @@ jobs:
restore-keys: |
${{ runner.os }}-swift-build-v2-${{ steps.swift-toolchain.outputs.key }}-
- name: Reset Swift binary artifact cache
run: |
set -euo pipefail
# SwiftPM can restore a stale binary-artifact cache where the
# Sparkle.xcframework directory exists without its Info.plist.
# Clear the restored build workspace plus Sparkle's shared artifact
# cache so the release build resolves artifacts from Package.resolved.
rm -rf apps/macos/.build "$HOME/Library/Caches/org.swift.swiftpm/artifacts/sparkle"
- name: Preserve Swift build cache hit
if: steps.swift-build-cache.outputs.cache-hit == 'true'
run: |
set -euo pipefail
if [ ! -d apps/macos/.build ]; then
echo "Swift build cache was reset; skipping mtime preservation."
exit 0
fi
# Exact source-hash cache hits already match these inputs; checkout
# mtimes are the only reason SwiftPM rebuilds cached products.
find apps/macos/Sources apps/macos/Tests apps/shared/OpenClawKit/Sources apps/swabble/Sources apps/macos/.build/checkouts \

View File

@@ -1,4 +1,4 @@
e8e71a715bd33405280b5a9f6b6e788abed636fba66ec5f3a4f9b9a768a1637f config-baseline.json
d8c6d36cb079b929ed403503dd09bf61aa7f7ad1ad157ed85d3fc2dd1547baa6 config-baseline.json
003183db53a41905c540f37b1d30b3006ef8906915e13eac844b643cd210fdfe config-baseline.core.json
859b021f65400df22c95ae55b074cf26c83d3a0bfadb3fceeaca522f6ea391ae config-baseline.channel.json
57291e1848bc059994923354d7b0a822909da7a8139a6615a9d5dfa2d189ee5e config-baseline.channel.json
74441e331aabb3026784c148d4ee5ce3f489a15ed87ffd9b7ba0c5e2a7bc93be config-baseline.plugin.json

View File

@@ -1,2 +1,2 @@
8882e41620deeed05be9526981c32a034444abc232903b946c48d416f46f06c3 plugin-sdk-api-baseline.json
40b22ddad62692447717a2b4f0ecdbd9f6209fa86eaf4e66f85d37c48e26d394 plugin-sdk-api-baseline.jsonl
28fcbbe21ee8088d78774a17e8906d408345dfe210f3b3511a18e26efad6904c plugin-sdk-api-baseline.json
8076e25cda96fd463e800064ff6c56a872cf61de73ca0353e0911e0b47f89751 plugin-sdk-api-baseline.jsonl

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/acpx",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/acpx",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@agentclientprotocol/claude-agent-acp": "0.36.1",
"@zed-industries/codex-acp": "0.14.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/acpx",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw ACP runtime backend",
"repository": {
"type": "git",
@@ -26,10 +26,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24",
"openclawVersion": "2026.5.24-alpha.1",
"staticAssets": [
{
"source": "./src/runtime-internals/mcp-proxy.mjs",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/admin-http-rpc",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw admin HTTP RPC endpoint",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/alibaba-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Alibaba Model Studio video provider plugin",
"type": "module",

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/amazon-bedrock-mantle-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/amazon-bedrock-mantle-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@anthropic-ai/sdk": "0.97.1",
"@aws/bedrock-token-generator": "1.1.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/amazon-bedrock-mantle-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Amazon Bedrock Mantle (OpenAI-compatible) provider plugin",
"repository": {
"type": "git",
@@ -25,10 +25,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24",
"openclawVersion": "2026.5.24-alpha.1",
"bundledDist": false
},
"release": {

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/amazon-bedrock-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/amazon-bedrock-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@aws-sdk/client-bedrock": "3.1051.0",
"@aws-sdk/client-bedrock-runtime": "3.1051.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/amazon-bedrock-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Amazon Bedrock provider plugin",
"repository": {
"type": "git",
@@ -27,10 +27,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24",
"openclawVersion": "2026.5.24-alpha.1",
"bundledDist": false
},
"release": {

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/anthropic-vertex-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/anthropic-vertex-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@anthropic-ai/vertex-sdk": "0.16.1",
"@earendil-works/pi-agent-core": "0.75.4",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/anthropic-vertex-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Anthropic Vertex provider plugin",
"repository": {
"type": "git",
@@ -25,10 +25,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24",
"openclawVersion": "2026.5.24-alpha.1",
"bundledDist": false
},
"release": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/anthropic-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Anthropic provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/arcee-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Arcee provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/azure-speech",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Azure Speech plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/bonjour",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Bonjour/mDNS gateway discovery",
"type": "module",
"dependencies": {

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/brave-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/brave-plugin",
"version": "2026.5.24"
"version": "2026.5.24-alpha.1"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/brave-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Brave plugin",
"repository": {
"type": "git",
@@ -21,10 +21,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/browser-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw browser tool plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/byteplus-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw BytePlus provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/canvas-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Canvas plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/cerebras-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Cerebras provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/chutes-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Chutes.ai provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/clickclack",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw ClickClack channel plugin",
"type": "module",
@@ -18,7 +18,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/cloudflare-ai-gateway-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Cloudflare AI Gateway provider plugin",
"type": "module",

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/codex",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/codex",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@earendil-works/pi-coding-agent": "0.75.4",
"@openai/codex": "0.132.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/codex",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Codex harness and model provider plugin",
"repository": {
"type": "git",
@@ -27,10 +27,10 @@
"minHostVersion": ">=2026.5.1-beta.1"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -87,6 +87,7 @@ import { createCodexTestModel } from "./test-support.js";
import {
buildContextEngineBinding,
buildTurnCollaborationMode,
buildThreadStartParams,
buildThreadResumeParams,
buildTurnStartParams,
startOrResumeThread,
@@ -221,6 +222,22 @@ function createCodexRuntimePlanFixture(): NonNullable<EmbeddedRunAttemptParams["
} as unknown as NonNullable<EmbeddedRunAttemptParams["runtimePlan"]>;
}
function createCodexSandboxTestConfig(): EmbeddedRunAttemptParams["config"] {
return {
agents: {
defaults: {
sandbox: {
mode: "all",
backend: "codex-test-sandbox",
scope: "session",
workspaceAccess: "rw",
prune: { idleHours: 0, maxAgeDays: 0 },
},
},
},
} as EmbeddedRunAttemptParams["config"];
}
function threadStartResult(threadId = "thread-1") {
return {
thread: {
@@ -395,7 +412,7 @@ function createAppServerHarness(
return {
request,
requests,
async waitForMethod(method: string, timeoutMs = appServerHarnessWait.timeout) {
async waitForMethod(method: string, timeoutMs: number = appServerHarnessWait.timeout) {
await vi.waitFor(
() => {
if (!requests.some((entry) => entry.method === method)) {
@@ -1170,7 +1187,7 @@ describe("runCodexAppServerAttempt", () => {
);
});
it("starts active OpenClaw sandbox threads with Codex native execution disabled", async () => {
it("builds active OpenClaw sandbox turns with Codex native execution disabled", async () => {
testing.setOpenClawCodingToolsFactoryForTests(() => [
createRuntimeDynamicTool("exec"),
createRuntimeDynamicTool("process"),
@@ -1181,54 +1198,50 @@ describe("runCodexAppServerAttempt", () => {
const params = createParams(sessionFile, workspaceDir);
params.disableTools = false;
params.runtimePlan = createCodexRuntimePlanFixture();
const sandbox = {
enabled: true,
backendId: "codex-test-sandbox",
workspaceAccess: "rw",
} as never;
const nativeToolSurfaceEnabled = testing.shouldEnableCodexAppServerNativeToolSurface(
params,
sandbox,
);
params.config = createCodexSandboxTestConfig();
const sandboxSessionKey = params.sessionKey;
if (!sandboxSessionKey) {
throw new Error("createParams must provide a sessionKey for Codex dynamic tool tests.");
}
const runAbortController = new AbortController();
const dynamicTools = await testing.buildDynamicTools({
params,
resolvedWorkspace: workspaceDir,
effectiveWorkspace: workspaceDir,
sandboxSessionKey: params.sessionKey!,
sandbox,
nativeToolSurfaceEnabled,
runAbortController: new AbortController(),
sandboxSessionKey,
sandbox: {
enabled: true,
backendId: "docker",
docker: { binds: ["/tmp/openclaw-data:/data:rw"] },
} as never,
nativeToolSurfaceEnabled: false,
runAbortController,
sessionAgentId: "main",
pluginConfig: {},
pluginConfig: { appServer: { mode: "yolo" } },
onYieldDetected: () => undefined,
});
const request = vi.fn(async (method: string, _requestParams?: unknown) => {
if (method === "thread/start") {
return threadStartResult();
}
throw new Error(`unexpected method: ${method}`);
const toolBridge = createCodexDynamicToolBridge({
tools: dynamicTools,
signal: runAbortController.signal,
});
await startOrResumeThread({
client: { request } as never,
params,
const appServer = resolveCodexAppServerRuntimeOptions({
pluginConfig: { appServer: { mode: "yolo" } },
env: {},
requirementsToml: null,
});
const startParams = buildThreadStartParams(params, {
cwd: workspaceDir,
dynamicTools: dynamicTools as never,
appServer: createThreadLifecycleAppServerOptions(),
nativeCodeModeEnabled: nativeToolSurfaceEnabled,
dynamicTools: toolBridge.specs,
appServer,
nativeCodeModeEnabled: false,
nativeCodeModeOnlyEnabled: false,
userMcpServersEnabled: nativeToolSurfaceEnabled,
environmentSelection: [],
});
const startRequest = request.mock.calls.find(([method]) => method === "thread/start");
const startParams = startRequest?.[1] as Record<string, unknown> | undefined;
const startConfig = startParams?.config as Record<string, unknown> | undefined;
const startDynamicTools = startParams?.dynamicTools as Array<{ name: string }> | undefined;
expect(startConfig?.["features.code_mode"]).toBe(false);
expect(startConfig?.["features.code_mode_only"]).toBe(false);
expect(startParams?.environments).toEqual([]);
expect(startDynamicTools?.map((tool) => tool.name)).toEqual([
const startConfig = startParams.config as Record<string, unknown>;
expect(startConfig["features.code_mode"]).toBe(false);
expect(startConfig["features.code_mode_only"]).toBe(false);
expect(startParams.environments).toEqual([]);
expect(startParams.dynamicTools?.map((tool) => tool.name)).toEqual([
"message",
"sandbox_exec",
"sandbox_process",
@@ -1276,19 +1289,8 @@ describe("runCodexAppServerAttempt", () => {
const params = createParams(sessionFile, workspaceDir);
params.disableTools = false;
params.runtimePlan = createCodexRuntimePlanFixture();
params.config = {
agents: {
defaults: {
sandbox: {
mode: "all",
backend: "codex-test-sandbox",
scope: "session",
workspaceAccess: "rw",
prune: { idleHours: 0, maxAgeDays: 0 },
},
},
},
} as never;
params.config = createCodexSandboxTestConfig();
params.timeoutMs = 60_000;
const nativeToolSurfaceEnabled = testing.shouldEnableCodexAppServerNativeToolSurface(
params,
sandbox as never,

View File

@@ -76,6 +76,18 @@ describe("codex app-server session binding", () => {
expect(bindingStat.isFile()).toBe(true);
});
it("creates the binding sidecar directory before writing", async () => {
const sessionFile = path.join(tempDir, "missing", "session.json");
await writeCodexAppServerBinding(sessionFile, {
threadId: "thread-123",
cwd: tempDir,
});
const bindingStat = await fs.stat(resolveCodexAppServerBindingPath(sessionFile));
expect(bindingStat.isFile()).toBe(true);
});
it("round-trips plugin app policy context with app ids as record keys", async () => {
const sessionFile = path.join(tempDir, "session.json");
const pluginAppPolicyContext = {

View File

@@ -1,4 +1,5 @@
import fs from "node:fs/promises";
import path from "node:path";
import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-runtime";
import {
ensureAuthProfileStore,
@@ -174,10 +175,9 @@ export async function writeCodexAppServerBinding(
createdAt: binding.createdAt ?? now,
updatedAt: now,
};
await fs.writeFile(
resolveCodexAppServerBindingPath(sessionFile),
`${JSON.stringify(payload, null, 2)}\n`,
);
const bindingPath = resolveCodexAppServerBindingPath(sessionFile);
await fs.mkdir(path.dirname(bindingPath), { recursive: true });
await fs.writeFile(bindingPath, `${JSON.stringify(payload, null, 2)}\n`);
}
function readContextEngineBinding(value: unknown): CodexAppServerContextEngineBinding | undefined {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/comfy-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw ComfyUI provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/copilot-proxy",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Copilot Proxy provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/deepgram-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Deepgram media-understanding provider",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/deepinfra-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw DeepInfra provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/deepseek-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw DeepSeek provider plugin",
"type": "module",

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/diagnostics-otel",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/diagnostics-otel",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@opentelemetry/api": "1.9.1",
"@opentelemetry/api-logs": "0.218.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/diagnostics-otel",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw diagnostics OpenTelemetry exporter",
"repository": {
"type": "git",
@@ -34,10 +34,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/diagnostics-prometheus",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/diagnostics-prometheus",
"version": "2026.5.24"
"version": "2026.5.24-alpha.1"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/diagnostics-prometheus",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw diagnostics Prometheus exporter",
"repository": {
"type": "git",
@@ -21,10 +21,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/diffs",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/diffs",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@pierre/diffs": "1.2.1",
"@pierre/theme": "1.0.3",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/diffs",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw diff viewer plugin",
"repository": {
"type": "git",
@@ -31,10 +31,10 @@
"minHostVersion": ">=2026.4.30"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24",
"openclawVersion": "2026.5.24-alpha.1",
"staticAssets": [
{
"source": "./assets/viewer-runtime.js",

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/discord",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/discord",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@discordjs/voice": "0.19.2",
"discord-api-types": "0.38.47",
@@ -17,7 +17,7 @@
"ws": "8.20.1"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/discord",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Discord channel plugin",
"repository": {
"type": "git",
@@ -21,7 +21,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -65,10 +65,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/document-extract-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw local document extraction plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/duckduckgo-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw DuckDuckGo plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/elevenlabs-speech",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw ElevenLabs speech plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/exa-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Exa plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/fal-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw fal provider plugin",
"type": "module",

View File

@@ -1,19 +1,19 @@
{
"name": "@openclaw/feishu",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/feishu",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@larksuiteoapi/node-sdk": "1.65.0",
"typebox": "1.1.38",
"zod": "4.4.3"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/feishu",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
"repository": {
"type": "git",
@@ -17,7 +17,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -48,10 +48,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/file-transfer",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw file transfer plugin (file_fetch, dir_list, dir_fetch, file_write)",
"type": "module",
"dependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/firecrawl-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Firecrawl plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/fireworks-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Fireworks provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/github-copilot-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw GitHub Copilot provider plugin",
"type": "module",

View File

@@ -194,6 +194,27 @@ function requireRecord(value: unknown, label: string): Record<string, unknown> {
return value;
}
function createAgentSessionMock(sessionStore: Record<string, unknown>) {
return {
resolveStorePath: vi.fn(() => "/tmp/sessions.json"),
loadSessionStore: vi.fn(() => sessionStore),
saveSessionStore: vi.fn(async () => {}),
updateSessionStore: vi.fn(async (_storePath, mutator) => mutator(sessionStore as never)),
resolveSessionFilePath: vi.fn(() => "/tmp/session.json"),
getSessionEntry: vi.fn(({ sessionKey }: { sessionKey: string }) => sessionStore[sessionKey]),
patchSessionEntry: vi.fn(async (params) => {
const current = (sessionStore[params.sessionKey] ?? params.fallbackEntry ?? {}) as Record<
string,
unknown
>;
const patch = (await params.update(current as never)) as Record<string, unknown>;
const next = { ...current, ...patch };
sessionStore[params.sessionKey] = next;
return next;
}),
};
}
function mockCall(mock: { mock: { calls: unknown[][] } }, callIndex = 0): unknown[] {
const call = mock.mock.calls.at(callIndex);
if (!call) {

View File

@@ -1,18 +1,18 @@
{
"name": "@openclaw/google-meet",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/google-meet",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"commander": "14.0.3",
"typebox": "1.1.38"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/google-meet",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Google Meet participant plugin",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -33,10 +33,10 @@
"minHostVersion": ">=2026.4.20"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/google-plugin",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Google plugin",
"type": "module",

View File

@@ -1,19 +1,19 @@
{
"name": "@openclaw/googlechat",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/googlechat",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"gaxios": "7.1.4",
"google-auth-library": "10.6.2",
"zod": "4.4.3"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/googlechat",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Google Chat channel plugin",
"repository": {
"type": "git",
@@ -17,7 +17,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -75,10 +75,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/gradium-speech",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Gradium speech plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/groq-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Groq media-understanding provider",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/huggingface-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Hugging Face provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/image-generation-core",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw image generation runtime package",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/imessage",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw iMessage channel plugin using imsg on a signed-in Mac",
"type": "module",
@@ -40,10 +40,10 @@
]
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
}
},
"pluginInspector": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/inworld-speech",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Inworld speech plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/irc",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw IRC channel plugin",
"type": "module",
"devDependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/kilocode-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Kilo Gateway provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/kimi-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Kimi provider plugin",
"type": "module",

View File

@@ -1,18 +1,18 @@
{
"name": "@openclaw/line",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/line",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@line/bot-sdk": "11.0.0",
"zod": "4.4.3"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/line",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw LINE channel plugin",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -46,10 +46,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/litellm-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw LiteLLM provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/llm-task",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw JSON-only LLM task plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/lmstudio-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw LM Studio provider plugin",
"type": "module",

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/lobster",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/lobster",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@clawdbot/lobster": "2026.4.6",
"ajv": "8.20.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/lobster",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
"repository": {
"type": "git",
@@ -25,10 +25,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,5 +1,11 @@
# Changelog
## 2026.5.24-alpha.1
### Changes
- Version alignment with core OpenClaw release numbers.
## 2026.5.24
### Changes

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/matrix",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/matrix",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@matrix-org/matrix-sdk-crypto-nodejs": "0.4.0",
"@matrix-org/matrix-sdk-crypto-wasm": "18.3.0",
@@ -18,7 +18,7 @@
"zod": "4.4.3"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/matrix",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Matrix channel plugin",
"repository": {
"type": "git",
@@ -22,7 +22,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -87,10 +87,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/mattermost",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Mattermost channel plugin",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/media-understanding-core",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw media understanding runtime package",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/meeting-notes",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw meeting notes plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-core",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw core memory search plugin",
"type": "module",
@@ -14,7 +14,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -9,7 +9,11 @@ import {
spyRuntimeLogs,
} from "openclaw/plugin-sdk/test-fixtures";
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { readShortTermRecallEntries, recordShortTermRecalls } from "./short-term-promotion.js";
import {
readShortTermRecallEntries,
recordShortTermRecalls,
waitForPendingShortTermWrites,
} from "./short-term-promotion.js";
const getMemorySearchManager = vi.hoisted(() => vi.fn());
const getRuntimeConfig = vi.hoisted(() => vi.fn(() => ({})));
@@ -92,7 +96,8 @@ beforeEach(() => {
}));
});
afterEach(() => {
afterEach(async () => {
await waitForPendingShortTermWrites();
vi.restoreAllMocks();
process.exitCode = undefined;
setVerbose(false);
@@ -102,6 +107,7 @@ afterAll(async () => {
if (!fixtureRoot) {
return;
}
await waitForPendingShortTermWrites();
await fs.rm(fixtureRoot, { recursive: true, force: true });
});

View File

@@ -734,6 +734,13 @@ async function withInProcessShortTermLock<T>(lockPath: string, task: () => Promi
}
}
export async function waitForPendingShortTermWrites(): Promise<void> {
while (inProcessShortTermLocks.size > 0) {
const pending = Array.from(inProcessShortTermLocks.values());
await Promise.allSettled(pending);
}
}
async function withShortTermLock<T>(workspaceDir: string, task: () => Promise<T>): Promise<T> {
const lockPath = resolveLockPath(workspaceDir);
return withInProcessShortTermLock(lockPath, async () => {

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/memory-lancedb",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/memory-lancedb",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@lancedb/lancedb": "0.29.0",
"apache-arrow": "18.1.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-lancedb",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
"repository": {
"type": "git",
@@ -26,10 +26,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"bundleRuntimeDependencies": false,

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-wiki",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw persistent wiki plugin",
"type": "module",
@@ -14,7 +14,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/microsoft-foundry",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Microsoft Foundry provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/microsoft-speech",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Microsoft speech plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/migrate-claude",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "Claude to OpenClaw migration provider",
"type": "module",
@@ -9,7 +9,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/migrate-hermes",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "Hermes to OpenClaw migration provider",
"type": "module",
@@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/minimax-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw MiniMax provider and OAuth plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/mistral-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Mistral provider plugin",
"type": "module",

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/moonshot-provider",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"private": true,
"description": "OpenClaw Moonshot provider plugin",
"type": "module",

View File

@@ -1,12 +1,12 @@
{
"name": "@openclaw/msteams",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/msteams",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"@azure/identity": "4.13.1",
"@microsoft/teams.api": "2.0.11",
@@ -17,7 +17,7 @@
"typebox": "1.1.38"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/msteams",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Microsoft Teams channel plugin",
"repository": {
"type": "git",
@@ -22,7 +22,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -58,10 +58,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

View File

@@ -1,17 +1,17 @@
{
"name": "@openclaw/nextcloud-talk",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@openclaw/nextcloud-talk",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"dependencies": {
"zod": "4.4.3"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@@ -1,6 +1,6 @@
{
"name": "@openclaw/nextcloud-talk",
"version": "2026.5.24",
"version": "2026.5.24-alpha.1",
"description": "OpenClaw Nextcloud Talk channel plugin",
"repository": {
"type": "git",
@@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.5.24"
"openclaw": ">=2026.5.24-alpha.1"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -44,10 +44,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
"pluginApi": ">=2026.5.24"
"pluginApi": ">=2026.5.24-alpha.1"
},
"build": {
"openclawVersion": "2026.5.24"
"openclawVersion": "2026.5.24-alpha.1"
},
"release": {
"publishToClawHub": true,

Some files were not shown because too many files have changed in this diff Show More