import { normalizeOptionalString } from "../shared/string-coerce.js" ;
export const DEFAULT_PLUGIN_DISCOVERY_CACHE_MS = 1000 ;
export const DEFAULT_PLUGIN_MANIFEST_CACHE_MS = 1000 ;
export function shouldUsePluginSnapshotCache(env: NodeJS.ProcessEnv): boolean {
if (normalizeOptionalString(env.OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE)) {
return false ;
}
if (normalizeOptionalString(env.OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE)) {
return false ;
}
const discoveryCacheMs = normalizeOptionalString(env.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS);
if (discoveryCacheMs === "0" ) {
return false ;
}
const manifestCacheMs = normalizeOptionalString(env.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS);
if (manifestCacheMs === "0" ) {
return false ;
}
return true ;
}
export function resolvePluginCacheMs(rawValue: string | undefined, defaultMs: number): number {
const raw = normalizeOptionalString(rawValue);
if (raw === "" || raw === "0" ) {
return 0 ;
}
if (!raw) {
return defaultMs;
}
const parsed = Number.parseInt(raw, 10 );
if (!Number.isFinite(parsed)) {
return defaultMs;
}
return Math.max(0 , parsed);
}
export function resolvePluginSnapshotCacheTtlMs(env: NodeJS.ProcessEnv): number {
const discoveryCacheMs = resolvePluginCacheMs(
env.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS,
DEFAULT_PLUGIN_DISCOVERY_CACHE_MS,
);
const manifestCacheMs = resolvePluginCacheMs(
env.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS,
DEFAULT_PLUGIN_MANIFEST_CACHE_MS,
);
return Math.min(discoveryCacheMs, manifestCacheMs);
}
export function buildPluginSnapshotCacheEnvKey(env: NodeJS.ProcessEnv): string {
return JSON.stringify({
OPENCLAW_BUNDLED_PLUGINS_DIR: env.OPENCLAW_BUNDLED_PLUGINS_DIR ?? "" ,
OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE: env.OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE ?? "" ,
OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE: env.OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE ?? "" ,
OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS: env.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS ?? "" ,
OPENCLAW_PLUGIN_MANIFEST_CACHE_MS: env.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS ?? "" ,
OPENCLAW_HOME: env.OPENCLAW_HOME ?? "" ,
OPENCLAW_STATE_DIR: env.OPENCLAW_STATE_DIR ?? "" ,
OPENCLAW_CONFIG_PATH: env.OPENCLAW_CONFIG_PATH ?? "" ,
HOME: env.HOME ?? "" ,
USERPROFILE: env.USERPROFILE ?? "" ,
VITEST: env.VITEST ?? "" ,
});
}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland