Files
openclaw/src/plugins/cache-controls.ts
2026-03-24 21:00:36 +00:00

69 lines
2.3 KiB
TypeScript

export const DEFAULT_PLUGIN_DISCOVERY_CACHE_MS = 1000;
export const DEFAULT_PLUGIN_MANIFEST_CACHE_MS = 1000;
export function shouldUsePluginSnapshotCache(env: NodeJS.ProcessEnv): boolean {
if (env.OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE?.trim()) {
return false;
}
if (env.OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE?.trim()) {
return false;
}
const discoveryCacheMs = env.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS?.trim();
if (discoveryCacheMs === "0") {
return false;
}
const manifestCacheMs = env.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS?.trim();
if (manifestCacheMs === "0") {
return false;
}
return true;
}
export function resolvePluginCacheMs(rawValue: string | undefined, defaultMs: number): number {
const raw = rawValue?.trim();
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,
options: { includeProcessVitestFallback?: boolean } = {},
) {
return {
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: options.includeProcessVitestFallback
? (env.VITEST ?? process.env.VITEST ?? "")
: (env.VITEST ?? ""),
};
}