From 002da3d3204182bb959e16d88dfa0fdd5122534b Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 1 May 2026 18:32:40 +0100 Subject: [PATCH] test(release): include mirrored root runtime deps --- src/plugins/bundled-runtime-deps.test.ts | 28 ++++++++++++++++++++++++ src/plugins/bundled-runtime-deps.ts | 3 +-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/plugins/bundled-runtime-deps.test.ts b/src/plugins/bundled-runtime-deps.test.ts index f5997621d3b..4a894f38e55 100644 --- a/src/plugins/bundled-runtime-deps.test.ts +++ b/src/plugins/bundled-runtime-deps.test.ts @@ -2095,6 +2095,34 @@ describe("createBundledRuntimeDepsPackagePlan config policy", () => { ]); }); + it("reports declared package mirror deps even when no plugin deps are selected", () => { + const packageRoot = makeTempDir(); + const stageDir = makeTempDir(); + fs.writeFileSync( + path.join(packageRoot, "package.json"), + JSON.stringify({ + name: "openclaw", + version: "2026.4.25", + dependencies: { jiti: "^2.6.1" }, + openclaw: { + bundle: { + mirroredRootRuntimeDependencies: ["jiti"], + }, + }, + }), + ); + fs.mkdirSync(path.join(packageRoot, "dist", "extensions"), { recursive: true }); + + const result = createBundledRuntimeDepsPackagePlan({ + packageRoot, + config: {}, + env: { OPENCLAW_PLUGIN_STAGE_DIR: stageDir }, + }); + + expect(result.deps.map((dep) => `${dep.name}@${dep.version}`)).toEqual(["jiti@^2.6.1"]); + expect(result.missing.map((dep) => `${dep.name}@${dep.version}`)).toEqual(["jiti@^2.6.1"]); + }); + it("includes selected plugin deps that can be used by mirrored root chunks", () => { const packageRoot = makeTempDir(); const stageDir = makeTempDir(); diff --git a/src/plugins/bundled-runtime-deps.ts b/src/plugins/bundled-runtime-deps.ts index e6272e2153d..124474f02de 100644 --- a/src/plugins/bundled-runtime-deps.ts +++ b/src/plugins/bundled-runtime-deps.ts @@ -374,8 +374,7 @@ export function createBundledRuntimeDepsPackagePlan( manifestCache, ...(normalizePluginId ? { normalizePluginId } : {}), }); - const packageRuntimeDeps = - pluginIds.length > 0 ? collectMirroredPackageRuntimeDeps(params.packageRoot) : []; + const packageRuntimeDeps = collectMirroredPackageRuntimeDeps(params.packageRoot); const plan = createBundledRuntimeDepsPlan({ deps: [...deps, ...packageRuntimeDeps], conflicts,