From 2791b00e7294af25f6b012bc7a3983f7ee444d86 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Wed, 15 Apr 2026 11:50:43 +0530 Subject: [PATCH] fix(build): move compat sidecars into src --- scripts/build-all.mjs | 6 ++++++ scripts/openclaw-npm-postpublish-verify.ts | 1 + scripts/openclaw-npm-release-check.ts | 1 + scripts/write-npm-update-compat-sidecars.ts | 10 ++++++++++ src/infra/npm-update-compat-sidecars.ts | 16 ++++++++++++++++ src/infra/update-global.test.ts | 2 +- src/infra/update-global.ts | 2 +- 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 scripts/write-npm-update-compat-sidecars.ts create mode 100644 src/infra/npm-update-compat-sidecars.ts diff --git a/scripts/build-all.mjs b/scripts/build-all.mjs index c9185cfa26f..f38482b98d2 100644 --- a/scripts/build-all.mjs +++ b/scripts/build-all.mjs @@ -10,6 +10,11 @@ export const BUILD_ALL_STEPS = [ { label: "canvas:a2ui:bundle", kind: "pnpm", pnpmArgs: ["canvas:a2ui:bundle"] }, { label: "tsdown", kind: "node", args: ["scripts/tsdown-build.mjs"] }, { label: "runtime-postbuild", kind: "node", args: ["scripts/runtime-postbuild.mjs"] }, + { + label: "write-npm-update-compat-sidecars", + kind: "node", + args: ["--import", "tsx", "scripts/write-npm-update-compat-sidecars.ts"], + }, { label: "build-stamp", kind: "node", args: ["scripts/build-stamp.mjs"] }, { label: "build:plugin-sdk:dts", @@ -65,6 +70,7 @@ export const BUILD_ALL_PROFILES = { "canvas:a2ui:bundle", "tsdown", "runtime-postbuild", + "write-npm-update-compat-sidecars", "build-stamp", "canvas-a2ui-copy", "copy-hook-metadata", diff --git a/scripts/openclaw-npm-postpublish-verify.ts b/scripts/openclaw-npm-postpublish-verify.ts index 0eb9c6b4e1f..4522d80c923 100644 --- a/scripts/openclaw-npm-postpublish-verify.ts +++ b/scripts/openclaw-npm-postpublish-verify.ts @@ -14,6 +14,7 @@ import { tmpdir } from "node:os"; import { isAbsolute, join, relative } from "node:path"; import { pathToFileURL } from "node:url"; import { formatErrorMessage } from "../src/infra/errors.ts"; +import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "../src/infra/npm-update-compat-sidecars.ts"; import { BUNDLED_RUNTIME_SIDECAR_PATHS } from "../src/plugins/runtime-sidecar-paths.ts"; import { listBundledPluginPackArtifacts } from "./lib/bundled-plugin-build-entries.mjs"; import { diff --git a/scripts/openclaw-npm-release-check.ts b/scripts/openclaw-npm-release-check.ts index 0813db74d67..366c5e0cf46 100644 --- a/scripts/openclaw-npm-release-check.ts +++ b/scripts/openclaw-npm-release-check.ts @@ -4,6 +4,7 @@ import { execFileSync } from "node:child_process"; import { readFileSync } from "node:fs"; import { basename } from "node:path"; import { pathToFileURL } from "node:url"; +import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "../src/infra/npm-update-compat-sidecars.ts"; import { compareReleaseVersions as compareReleaseVersionsBase, resolveNpmDistTagMirrorAuth as resolveNpmDistTagMirrorAuthBase, diff --git a/scripts/write-npm-update-compat-sidecars.ts b/scripts/write-npm-update-compat-sidecars.ts new file mode 100644 index 00000000000..f002f6f81fa --- /dev/null +++ b/scripts/write-npm-update-compat-sidecars.ts @@ -0,0 +1,10 @@ +#!/usr/bin/env -S node --import tsx + +import fs from "node:fs"; +import path from "node:path"; +import { NPM_UPDATE_COMPAT_SIDECARS } from "../src/infra/npm-update-compat-sidecars.ts"; + +for (const entry of NPM_UPDATE_COMPAT_SIDECARS) { + fs.mkdirSync(path.dirname(entry.path), { recursive: true }); + fs.writeFileSync(entry.path, entry.content, "utf8"); +} diff --git a/src/infra/npm-update-compat-sidecars.ts b/src/infra/npm-update-compat-sidecars.ts new file mode 100644 index 00000000000..8eac30d3f1b --- /dev/null +++ b/src/infra/npm-update-compat-sidecars.ts @@ -0,0 +1,16 @@ +export const NPM_UPDATE_COMPAT_SIDECARS = [ + { + path: "dist/extensions/qa-channel/runtime-api.js", + content: + "// Compatibility stub for older OpenClaw updaters. The QA channel implementation is not packaged.\nexport {};\n", + }, + { + path: "dist/extensions/qa-lab/runtime-api.js", + content: + "// Compatibility stub for older OpenClaw updaters. The QA lab implementation is not packaged.\nexport {};\n", + }, +] as const; + +export const NPM_UPDATE_COMPAT_SIDECAR_PATHS = new Set( + NPM_UPDATE_COMPAT_SIDECARS.map((entry) => entry.path), +); diff --git a/src/infra/update-global.test.ts b/src/infra/update-global.test.ts index d5674fa5889..d468a1f1fc3 100644 --- a/src/infra/update-global.test.ts +++ b/src/infra/update-global.test.ts @@ -1,11 +1,11 @@ import fs from "node:fs/promises"; import path from "node:path"; import { afterEach, describe, expect, it, vi } from "vitest"; -import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "../../scripts/lib/npm-update-compat-sidecars.mjs"; import { bundledDistPluginFile } from "../../test/helpers/bundled-plugin-paths.js"; import { BUNDLED_RUNTIME_SIDECAR_PATHS } from "../plugins/runtime-sidecar-paths.js"; import { withTempDir } from "../test-helpers/temp-dir.js"; import { captureEnv } from "../test-utils/env.js"; +import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "./npm-update-compat-sidecars.js"; import { writePackageDistInventory } from "./package-dist-inventory.js"; import { canResolveRegistryVersionForPackageTarget, diff --git a/src/infra/update-global.ts b/src/infra/update-global.ts index 2722611b542..fd3a342a3f0 100644 --- a/src/infra/update-global.ts +++ b/src/infra/update-global.ts @@ -2,10 +2,10 @@ import fsSync from "node:fs"; import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "../../scripts/lib/npm-update-compat-sidecars.mjs"; import { BUNDLED_RUNTIME_SIDECAR_PATHS } from "../plugins/runtime-sidecar-paths.js"; import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js"; import { pathExists } from "../utils.js"; +import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "./npm-update-compat-sidecars.js"; import { collectPackageDistInventory, readPackageDistInventoryIfPresent,