From 795dd2d02e4dbcd6c22e21bae9a0b8502b2e0bc0 Mon Sep 17 00:00:00 2001 From: Ruben Cuevas Date: Tue, 5 May 2026 09:59:32 -0400 Subject: [PATCH] fix(gateway): share runtime asset list --- scripts/run-node.mjs | 7 +++++-- src/infra/run-node.test.ts | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/scripts/run-node.mjs b/scripts/run-node.mjs index 7dee0d38bf7..6d00626c427 100644 --- a/scripts/run-node.mjs +++ b/scripts/run-node.mjs @@ -19,7 +19,10 @@ import { writeBuildStamp as writeDistBuildStamp, writeRuntimePostBuildStamp as writeDistRuntimePostBuildStamp, } from "./lib/local-build-metadata.mjs"; -import { listStaticExtensionAssetSources } from "./lib/static-extension-assets.mjs"; +import { + discoverStaticExtensionAssets, + listStaticExtensionAssetSources, +} from "./lib/static-extension-assets.mjs"; import { extensionRestartMetadataFiles, isBuildRelevantRunNodePath, @@ -418,7 +421,7 @@ const listRequiredOpenClawExtensionAliasOutputs = (deps) => { const listRequiredStaticExtensionAssetOutputs = (deps) => { const distRoot = resolveRuntimePostBuildDistRoot(deps); - return runtimePostBuildStaticAssets + return discoverStaticExtensionAssets({ rootDir: deps.cwd, fs: deps.fs }) .filter((asset) => deps.fs.existsSync(path.join(deps.cwd, asset.src))) .map((asset) => path.join(distRoot, normalizePath(asset.dest).replace(/^dist\//u, ""))) .toSorted((left, right) => left.localeCompare(right)); diff --git a/src/infra/run-node.test.ts b/src/infra/run-node.test.ts index f7c6a3c7d4b..a893a878f4d 100644 --- a/src/infra/run-node.test.ts +++ b/src/infra/run-node.test.ts @@ -50,8 +50,14 @@ const DIST_RUNTIME_EXTENSION_SKILL = "dist-runtime/extensions/demo/skills/SKILL. const DIST_OPENCLAW_ALIAS_PACKAGE = "dist/extensions/node_modules/openclaw/package.json"; const DIST_OPENCLAW_ALIAS_PLUGIN_SDK_INDEX = "dist/extensions/node_modules/openclaw/plugin-sdk/index.js"; +const ACPX_PACKAGE = "extensions/acpx/package.json"; const ACPX_MCP_PROXY_SOURCE = "extensions/acpx/src/runtime-internals/mcp-proxy.mjs"; const DIST_ACPX_MCP_PROXY = "dist/extensions/acpx/mcp-proxy.mjs"; +const ACPX_ERROR_FORMAT_SOURCE = "extensions/acpx/src/runtime-internals/error-format.mjs"; +const DIST_ACPX_ERROR_FORMAT = "dist/extensions/acpx/error-format.mjs"; +const ACPX_MCP_COMMAND_LINE_SOURCE = "extensions/acpx/src/runtime-internals/mcp-command-line.mjs"; +const DIST_ACPX_MCP_COMMAND_LINE = "dist/extensions/acpx/mcp-command-line.mjs"; +const DIFFS_PACKAGE = "extensions/diffs/package.json"; const DIFFS_VIEWER_RUNTIME_SOURCE = "extensions/diffs/assets/viewer-runtime.js"; const DIST_DIFFS_VIEWER_RUNTIME = "dist/extensions/diffs/assets/viewer-runtime.js"; const DIST_EXTENSION_MANIFEST = bundledDistPluginFile("demo", "openclaw.plugin.json"); @@ -1734,16 +1740,30 @@ describe("run-node script", () => { await setupTrackedProject(tmp, { files: { [ROOT_SRC]: "export const value = 1;\n", + [ACPX_PACKAGE]: + '{"openclaw":{"build":{"staticAssets":[{"source":"./src/runtime-internals/mcp-proxy.mjs","output":"mcp-proxy.mjs"},{"source":"./src/runtime-internals/error-format.mjs","output":"error-format.mjs"},{"source":"./src/runtime-internals/mcp-command-line.mjs","output":"mcp-command-line.mjs"}]}}}\n', [ACPX_MCP_PROXY_SOURCE]: "export {};\n", [DIST_ACPX_MCP_PROXY]: "export {};\n", + [ACPX_ERROR_FORMAT_SOURCE]: "export {};\n", + [DIST_ACPX_ERROR_FORMAT]: "export {};\n", + [ACPX_MCP_COMMAND_LINE_SOURCE]: "export {};\n", + [DIST_ACPX_MCP_COMMAND_LINE]: "export {};\n", + [DIFFS_PACKAGE]: + '{"openclaw":{"build":{"staticAssets":[{"source":"./assets/viewer-runtime.js","output":"assets/viewer-runtime.js"}]}}}\n', [DIFFS_VIEWER_RUNTIME_SOURCE]: "export {};\n", [DIST_DIFFS_VIEWER_RUNTIME]: "export {};\n", [RUNTIME_POSTBUILD_STAMP]: '{"head":"abc123"}\n', }, buildPaths: [ ROOT_SRC, + ACPX_PACKAGE, ACPX_MCP_PROXY_SOURCE, DIST_ACPX_MCP_PROXY, + ACPX_ERROR_FORMAT_SOURCE, + DIST_ACPX_ERROR_FORMAT, + ACPX_MCP_COMMAND_LINE_SOURCE, + DIST_ACPX_MCP_COMMAND_LINE, + DIFFS_PACKAGE, DIFFS_VIEWER_RUNTIME_SOURCE, DIST_DIFFS_VIEWER_RUNTIME, DIST_ENTRY, @@ -1751,7 +1771,7 @@ describe("run-node script", () => { RUNTIME_POSTBUILD_STAMP, ], }); - await fs.rm(resolvePath(tmp, DIST_ACPX_MCP_PROXY)); + await fs.rm(resolvePath(tmp, DIST_ACPX_MCP_COMMAND_LINE)); const requirement = resolveRuntimePostBuildRequirement( createBuildRequirementDeps(tmp, {