From 5f42438cf75dc9e2c26d7793497607536f8e5c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A7=E9=BE=99?= Date: Fri, 1 May 2026 12:55:42 +0800 Subject: [PATCH] test(plugins): cover runtime deps package manifest fallback --- CHANGELOG.md | 1 + src/plugins/bundled-runtime-deps.test.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a518d779ee6..0c8e276f3d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ Docs: https://docs.openclaw.ai - Plugins/runtime-deps: prune inactive same-package versioned runtime-deps roots after bundled dependency repair, so upgrades do not leave old `openclaw--` package caches behind after doctor runs. Thanks @vincentkoc. - Plugins/runtime-deps: prune legacy version-scoped plugin runtime-deps roots during bundled dependency repair and cover the path in Package Acceptance's upgrade-survivor matrix, so upgrades from 2026.4.x no longer leave stale per-plugin runtime trees after doctor runs. Thanks @vincentkoc. - Plugins/runtime-deps: keep Gateway startup plugin imports and runtime plugin fallback loads verify-only after startup/config repair planning, so packaged installs no longer spawn package-manager repair from hot paths after readiness. Refs #75283 and #75069. Thanks @brokemac79 and @xiaohuaxi. +- Plugins/runtime-deps: treat package.json runtime-deps manifests as supersets when generated materialization metadata is absent, so bundled plugin activation stops restaging already-installed dependency subsets on every activation. Fixes #75429. (#75431) Thanks @loyur. - Voice Call/realtime: add default-off fast memory/session context for `openclaw_agent_consult`, giving live calls a bounded answer-or-miss path before the full agent consult. Fixes #71849. Thanks @amzzzzzzz. - Google Meet: interrupt Realtime provider output when local barge-in clears playback, so command-pair audio stops model speech instead of only restarting Chrome playback. Fixes #73850. (#73834) Thanks @shhtheonlyperson. - Gateway/config: cap oversized plugin-owned schemas in the full `config.schema` response so large installed plugin sets cannot balloon Gateway RSS or crash schema clients. Thanks @vincentkoc. diff --git a/src/plugins/bundled-runtime-deps.test.ts b/src/plugins/bundled-runtime-deps.test.ts index fc54d4cf520..7ff759836b4 100644 --- a/src/plugins/bundled-runtime-deps.test.ts +++ b/src/plugins/bundled-runtime-deps.test.ts @@ -3187,6 +3187,23 @@ describe("ensureBundledPluginRuntimeDeps", () => { expect(result).toEqual({ installedSpecs: [] }); }); + it("accepts package.json runtime-deps supersets when generated metadata is absent", () => { + const installRoot = makeTempDir(); + fs.writeFileSync( + path.join(installRoot, "package.json"), + JSON.stringify({ + name: "openclaw-bundled-runtime-deps", + dependencies: { + "alpha-runtime": "1.0.0", + tokenjuice: "0.7.0", + }, + }), + ); + writeInstalledPackage(installRoot, "alpha-runtime", "1.0.0"); + + expect(isRuntimeDepsPlanMaterialized(installRoot, ["alpha-runtime@1.0.0"])).toBe(true); + }); + it("drops stale package versions from the next package-level plan", () => { const packageRoot = makeTempDir(); const stageDir = makeTempDir();