diff --git a/scripts/check-plugin-gateway-gauntlet.mjs b/scripts/check-plugin-gateway-gauntlet.mjs index 89e892f612dd..472d59bf4cf5 100644 --- a/scripts/check-plugin-gateway-gauntlet.mjs +++ b/scripts/check-plugin-gateway-gauntlet.mjs @@ -737,6 +737,7 @@ async function main() { const commandEnv = buildGauntletPrebuildEnv(env, { includePrivateQa: !options.skipQa, buildIds: selectedPlugins.map((plugin) => plugin.buildId), + skipDeclarationBuild: true, }); if (!options.skipPrebuild && (selectedPlugins.length > 0 || !options.skipQa)) { process.stderr.write("[plugin-gauntlet] prebuild\n"); diff --git a/scripts/lib/plugin-gateway-gauntlet.mjs b/scripts/lib/plugin-gateway-gauntlet.mjs index 0f9dd58c7898..010db856d1cd 100644 --- a/scripts/lib/plugin-gateway-gauntlet.mjs +++ b/scripts/lib/plugin-gateway-gauntlet.mjs @@ -350,23 +350,33 @@ function collectQaBaselineRegressionObservations(rows, thresholds = {}) { function buildGauntletPrebuildEnv(env, options = {}) { const buildIds = new Set(normalizeStringArray(options.buildIds)); + const runtimeOnlyPrebuildEnv = options.skipDeclarationBuild + ? { OPENCLAW_RUN_NODE_SKIP_DTS_BUILD: "1" } + : {}; + const hasRuntimeOnlyPrebuildEnv = Object.keys(runtimeOnlyPrebuildEnv).length > 0; if (options.includePrivateQa) { for (const pluginId of NON_PACKAGED_BUNDLED_PLUGIN_DIRS) { buildIds.add(pluginId); } } if (!options.includePrivateQa) { - return buildIds.size === 0 + return buildIds.size === 0 && !hasRuntimeOnlyPrebuildEnv ? env : { ...env, - OPENCLAW_BUNDLED_PLUGIN_BUILD_IDS: [...buildIds] - .toSorted((left, right) => left.localeCompare(right)) - .join(","), + ...runtimeOnlyPrebuildEnv, + ...(buildIds.size > 0 + ? { + OPENCLAW_BUNDLED_PLUGIN_BUILD_IDS: [...buildIds] + .toSorted((left, right) => left.localeCompare(right)) + .join(","), + } + : {}), }; } return { ...env, + ...runtimeOnlyPrebuildEnv, OPENCLAW_BUILD_PRIVATE_QA: "1", OPENCLAW_ENABLE_PRIVATE_QA_CLI: "1", ...(buildIds.size > 0 diff --git a/test/scripts/plugin-gateway-gauntlet.test.ts b/test/scripts/plugin-gateway-gauntlet.test.ts index 0417f9f99203..3385158421ee 100644 --- a/test/scripts/plugin-gateway-gauntlet.test.ts +++ b/test/scripts/plugin-gateway-gauntlet.test.ts @@ -288,6 +288,22 @@ describe("plugin gateway gauntlet helpers", () => { expect(buildGauntletPrebuildEnv(env, { includePrivateQa: false })).toBe(env); }); + it("marks gauntlet prebuilds as runtime-only when requested", () => { + expect( + buildGauntletPrebuildEnv( + { EXISTING: "1" }, + { + buildIds: ["acpx"], + skipDeclarationBuild: true, + }, + ), + ).toEqual({ + EXISTING: "1", + OPENCLAW_BUNDLED_PLUGIN_BUILD_IDS: "acpx", + OPENCLAW_RUN_NODE_SKIP_DTS_BUILD: "1", + }); + }); + it("prebuilds only selected plugin dist entries for bounded gauntlet runs", () => { expect( buildGauntletPrebuildEnv(