


























@@ -59,6 +59,8 @@ const DIST_RUNTIME_EXTENSION_SKILL = "dist-runtime/extensions/demo/skills/SKILL.
5959const DIST_OPENCLAW_ALIAS_PACKAGE = "dist/extensions/node_modules/openclaw/package.json";
6060const DIST_OPENCLAW_ALIAS_PLUGIN_SDK_INDEX =
6161"dist/extensions/node_modules/openclaw/plugin-sdk/index.js";
62+const DIST_OPENCLAW_ALIAS_PLUGIN_SDK_STRING_COERCE =
63+"dist/extensions/node_modules/openclaw/plugin-sdk/string-coerce-runtime.js";
6264const DIFFS_PACKAGE = "extensions/diffs/package.json";
6365const DIFFS_VIEWER_RUNTIME_SOURCE = "extensions/diffs/assets/viewer-runtime.js";
6466const DIST_DIFFS_VIEWER_RUNTIME = "dist/extensions/diffs/assets/viewer-runtime.js";
@@ -2193,6 +2195,62 @@ describe("run-node script", () => {
21932195});
21942196});
219521972198+it("does not require private OpenClaw SDK dist files that package exports omit", async () => {
2199+await withTempDir({ prefix: "openclaw-run-node-" }, async (tmp) => {
2200+await setupTrackedProject(tmp, {
2201+files: {
2202+[ROOT_SRC]: "export const value = 1;\n",
2203+[ROOT_PACKAGE]: JSON.stringify(
2204+{
2205+name: "openclaw-test",
2206+exports: {
2207+"./plugin-sdk": "./dist/plugin-sdk/index.js",
2208+"./plugin-sdk/string-coerce-runtime": "./dist/plugin-sdk/string-coerce-runtime.js",
2209+},
2210+},
2211+null,
2212+2,
2213+),
2214+[DIST_PLUGIN_SDK_INDEX]: "export * from './core.js';\n",
2215+"dist/plugin-sdk/string-coerce-runtime.js": "export const publicRuntime = true;\n",
2216+"dist/plugin-sdk/ssrf-runtime-internal.js": "export const internal = true;\n",
2217+[DIST_OPENCLAW_ALIAS_PACKAGE]:
2218+'{"name":"openclaw","type":"module","exports":{"./plugin-sdk":"./plugin-sdk/index.js","./plugin-sdk/string-coerce-runtime":"./plugin-sdk/string-coerce-runtime.js"}}\n',
2219+[DIST_OPENCLAW_ALIAS_PLUGIN_SDK_INDEX]:
2220+"export * from '../../../../plugin-sdk/index.js';\n",
2221+[DIST_OPENCLAW_ALIAS_PLUGIN_SDK_STRING_COERCE]:
2222+"export * from '../../../../plugin-sdk/string-coerce-runtime.js';\n",
2223+[RUNTIME_POSTBUILD_STAMP]: '{"head":"abc123"}\n',
2224+},
2225+buildPaths: [
2226+ROOT_SRC,
2227+ROOT_PACKAGE,
2228+DIST_ENTRY,
2229+DIST_PLUGIN_SDK_INDEX,
2230+"dist/plugin-sdk/string-coerce-runtime.js",
2231+"dist/plugin-sdk/ssrf-runtime-internal.js",
2232+DIST_OPENCLAW_ALIAS_PACKAGE,
2233+DIST_OPENCLAW_ALIAS_PLUGIN_SDK_INDEX,
2234+DIST_OPENCLAW_ALIAS_PLUGIN_SDK_STRING_COERCE,
2235+BUILD_STAMP,
2236+RUNTIME_POSTBUILD_STAMP,
2237+],
2238+});
2239+2240+const requirement = resolveRuntimePostBuildRequirement(
2241+createBuildRequirementDeps(tmp, {
2242+gitHead: "abc123\n",
2243+gitStatus: "",
2244+}),
2245+);
2246+2247+expect(requirement).toEqual({
2248+shouldSync: false,
2249+reason: "clean",
2250+});
2251+});
2252+});
2253+21962254it("reports missing static runtime postbuild asset outputs when runtime stamps match HEAD", async () => {
21972255await withTempDir({ prefix: "openclaw-run-node-" }, async (tmp) => {
21982256await setupTrackedProject(tmp, {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。