mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 10:30:44 +00:00
fix: stabilize beta update and OpenAI transport paths
This commit is contained in:
@@ -10,6 +10,27 @@ import { writeOfficialChannelCatalog } from "./write-official-channel-catalog.mj
|
||||
|
||||
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
||||
const ROOT_RUNTIME_ALIAS_PATTERN = /^(?<base>.+\.(?:runtime|contract))-[A-Za-z0-9_-]+\.js$/u;
|
||||
const ROOT_STABLE_RUNTIME_ALIAS_PATTERN = /^.+\.(?:runtime|contract)\.js$/u;
|
||||
const ROOT_RUNTIME_IMPORT_SPECIFIER_PATTERN =
|
||||
/(["'])\.\/([^"']+\.(?:runtime|contract)-[A-Za-z0-9_-]+\.js)\1/gu;
|
||||
const LEGACY_ROOT_RUNTIME_COMPAT_ALIASES = [
|
||||
// v2026.4.29 dispatch lazy chunks. Package updates used to replace the
|
||||
// dist tree before the live gateway had restarted, so an already-loaded old
|
||||
// dispatch chunk could still resolve these names after the swap.
|
||||
["abort.runtime-DX6vo4yJ.js", "abort.runtime.js"],
|
||||
["get-reply-from-config.runtime-uABrvCZ-.js", "get-reply-from-config.runtime.js"],
|
||||
["reply-media-paths.runtime-C5UnVaLF.js", "reply-media-paths.runtime.js"],
|
||||
["route-reply.runtime-D4PGzijU.js", "route-reply.runtime.js"],
|
||||
["runtime-plugins.runtime-fLHuT7Vs.js", "runtime-plugins.runtime.js"],
|
||||
["tts.runtime-66taD50M.js", "tts.runtime.js"],
|
||||
// v2026.5.2-beta.1 dispatch lazy chunks.
|
||||
["abort.runtime-CKviLU0L.js", "abort.runtime.js"],
|
||||
["get-reply-from-config.runtime-BzFAggVK.js", "get-reply-from-config.runtime.js"],
|
||||
["reply-media-paths.runtime-ZpULeITb.js", "reply-media-paths.runtime.js"],
|
||||
["route-reply.runtime-uzaOjbd1.js", "route-reply.runtime.js"],
|
||||
["runtime-plugins.runtime-CNAfmQRG.js", "runtime-plugins.runtime.js"],
|
||||
["tts.runtime-D-THXDsp.js", "tts.runtime.js"],
|
||||
];
|
||||
const LEGACY_CLI_EXIT_COMPAT_CHUNKS = [
|
||||
{
|
||||
dest: "dist/memory-state-CcqRgDZU.js",
|
||||
@@ -99,6 +120,74 @@ export function writeStableRootRuntimeAliases(params = {}) {
|
||||
}
|
||||
}
|
||||
|
||||
export function rewriteRootRuntimeImportsToStableAliases(params = {}) {
|
||||
const rootDir = params.rootDir ?? ROOT;
|
||||
const distDir = path.join(rootDir, "dist");
|
||||
const fsImpl = params.fs ?? fs;
|
||||
let entries = [];
|
||||
try {
|
||||
entries = fsImpl.readdirSync(distDir, { withFileTypes: true });
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
|
||||
const runtimeAliasFiles = new Map();
|
||||
for (const entry of entries) {
|
||||
if (!entry.isFile()) {
|
||||
continue;
|
||||
}
|
||||
const match = entry.name.match(ROOT_RUNTIME_ALIAS_PATTERN);
|
||||
if (match?.groups?.base) {
|
||||
runtimeAliasFiles.set(entry.name, `${match.groups.base}.js`);
|
||||
}
|
||||
}
|
||||
if (runtimeAliasFiles.size === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const entry of entries) {
|
||||
if (!entry.isFile() || !entry.name.endsWith(".js")) {
|
||||
continue;
|
||||
}
|
||||
if (ROOT_STABLE_RUNTIME_ALIAS_PATTERN.test(entry.name)) {
|
||||
continue;
|
||||
}
|
||||
const filePath = path.join(distDir, entry.name);
|
||||
let source;
|
||||
try {
|
||||
source = fsImpl.readFileSync(filePath, "utf8");
|
||||
} catch {
|
||||
continue;
|
||||
}
|
||||
const rewritten = source.replace(
|
||||
ROOT_RUNTIME_IMPORT_SPECIFIER_PATTERN,
|
||||
(specifier, quote, fileName) => {
|
||||
const aliasFileName = runtimeAliasFiles.get(fileName);
|
||||
return aliasFileName ? `${quote}./${aliasFileName}${quote}` : specifier;
|
||||
},
|
||||
);
|
||||
if (rewritten !== source) {
|
||||
writeTextFileIfChanged(filePath, rewritten);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function writeLegacyRootRuntimeCompatAliases(params = {}) {
|
||||
const rootDir = params.rootDir ?? ROOT;
|
||||
const distDir = path.join(rootDir, "dist");
|
||||
const fsImpl = params.fs ?? fs;
|
||||
for (const [legacyFileName, aliasFileName] of LEGACY_ROOT_RUNTIME_COMPAT_ALIASES) {
|
||||
const legacyPath = path.join(distDir, legacyFileName);
|
||||
if (fsImpl.existsSync(legacyPath)) {
|
||||
continue;
|
||||
}
|
||||
if (!fsImpl.existsSync(path.join(distDir, aliasFileName))) {
|
||||
continue;
|
||||
}
|
||||
writeTextFileIfChanged(legacyPath, `export * from "./${aliasFileName}";\n`);
|
||||
}
|
||||
}
|
||||
|
||||
export function writeLegacyCliExitCompatChunks(params = {}) {
|
||||
const rootDir = params.rootDir ?? ROOT;
|
||||
const chunks = params.chunks ?? LEGACY_CLI_EXIT_COMPAT_CHUNKS;
|
||||
@@ -124,7 +213,9 @@ export function runRuntimePostBuild(params = {}) {
|
||||
runPhase("bundled plugin metadata", () => copyBundledPluginMetadata(params));
|
||||
runPhase("official channel catalog", () => writeOfficialChannelCatalog(params));
|
||||
runPhase("bundled plugin runtime overlay", () => stageBundledPluginRuntime(params));
|
||||
runPhase("stable root runtime imports", () => rewriteRootRuntimeImportsToStableAliases(params));
|
||||
runPhase("stable root runtime aliases", () => writeStableRootRuntimeAliases(params));
|
||||
runPhase("legacy root runtime compat aliases", () => writeLegacyRootRuntimeCompatAliases(params));
|
||||
runPhase("legacy CLI exit compat chunks", () => writeLegacyCliExitCompatChunks(params));
|
||||
runPhase("static extension assets", () => copyStaticExtensionAssets(params));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user