fix(plugin-sdk): reuse cached plugin jiti loader helper

This commit is contained in:
Vincent Koc
2026-04-14 17:01:45 +01:00
parent a7436c8b4a
commit 0d2a4b4fec

View File

@@ -2,17 +2,16 @@ import fs from "node:fs";
import { createRequire } from "node:module";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { createJiti } from "jiti";
import { emptyChannelConfigSchema } from "../channels/plugins/config-schema.js";
import type { ChannelConfigSchema } from "../channels/plugins/types.config.js";
import type { ChannelPlugin } from "../channels/plugins/types.plugin.js";
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
import type { PluginRuntime } from "../plugins/runtime/types.js";
import {
buildPluginLoaderJitiOptions,
resolveLoaderPackageRoot,
resolvePluginLoaderJitiConfig,
} from "../plugins/sdk-alias.js";
getCachedPluginJitiLoader,
type PluginJitiLoaderCache,
} from "../plugins/jiti-loader-cache.js";
import type { PluginRuntime } from "../plugins/runtime/types.js";
import { resolveLoaderPackageRoot } from "../plugins/sdk-alias.js";
import type { AnyAgentTool, OpenClawPluginApi, PluginCommandContext } from "../plugins/types.js";
import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js";
@@ -66,7 +65,7 @@ export type BundledChannelSetupEntryContract<TPlugin = ChannelPlugin> = {
};
const nodeRequire = createRequire(import.meta.url);
const jitiLoaders = new Map<string, ReturnType<typeof createJiti>>();
const jitiLoaders: PluginJitiLoaderCache = new Map();
const loadedModuleExports = new Map<string, unknown>();
const disableBundledEntrySourceFallbackEnv = "OPENCLAW_DISABLE_BUNDLED_ENTRY_SOURCE_FALLBACK";
@@ -261,22 +260,13 @@ function resolveBundledEntryModulePath(importMetaUrl: string, specifier: string)
}
function getJiti(modulePath: string) {
const { tryNative, aliasMap, cacheKey } = resolvePluginLoaderJitiConfig({
return getCachedPluginJitiLoader({
cache: jitiLoaders,
modulePath,
argv1: process.argv[1],
moduleUrl: import.meta.url,
importerUrl: import.meta.url,
preferBuiltDist: true,
jitiFilename: import.meta.url,
});
const cached = jitiLoaders.get(cacheKey);
if (cached) {
return cached;
}
const loader = createJiti(import.meta.url, {
...buildPluginLoaderJitiOptions(aliasMap),
tryNative,
});
jitiLoaders.set(cacheKey, loader);
return loader;
}
function loadBundledEntryModuleSync(importMetaUrl: string, specifier: string): unknown {