From 0d2a4b4fec73f034c2f75f57248cd45a3bcf7f51 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 14 Apr 2026 17:01:45 +0100 Subject: [PATCH] fix(plugin-sdk): reuse cached plugin jiti loader helper --- src/plugin-sdk/channel-entry-contract.ts | 30 ++++++++---------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/plugin-sdk/channel-entry-contract.ts b/src/plugin-sdk/channel-entry-contract.ts index ac5cbc87d2e..8712c73538c 100644 --- a/src/plugin-sdk/channel-entry-contract.ts +++ b/src/plugin-sdk/channel-entry-contract.ts @@ -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 = { }; const nodeRequire = createRequire(import.meta.url); -const jitiLoaders = new Map>(); +const jitiLoaders: PluginJitiLoaderCache = new Map(); const loadedModuleExports = new Map(); 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 {