Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { createExpiringMapCache, isCacheEnabled, resolveCacheTtlMs } from "../cache-utils.js";
import type { SessionEntry } from "./types.js";
type SessionStoreCacheEntry = {
store: Record<string, SessionEntry>;
mtimeMs?: number;
sizeBytes?: number;
serialized?: string;
};
const DEFAULT_SESSION_STORE_TTL_MS = 45_000; // 45 seconds (between 30-60s)
const SESSION_STORE_CACHE = createExpiringMapCache<string, SessionStoreCacheEntry>({
ttlMs: getSessionStoreTtl,
});
const SESSION_STORE_SERIALIZED_CACHE = new Map<string, string>();
export function getSessionStoreTtl(): number {
return resolveCacheTtlMs({
envValue: process.env.OPENCLAW_SESSION_CACHE_TTL_MS,
defaultTtlMs: DEFAULT_SESSION_STORE_TTL_MS,
});
}
export function isSessionStoreCacheEnabled(): boolean {
return isCacheEnabled(getSessionStoreTtl());
}
export function clearSessionStoreCaches(): void {
SESSION_STORE_CACHE.clear();
SESSION_STORE_SERIALIZED_CACHE.clear();
}
export function invalidateSessionStoreCache(storePath: string): void {
SESSION_STORE_CACHE.delete(storePath);
SESSION_STORE_SERIALIZED_CACHE.delete(storePath);
}
export function getSerializedSessionStore(storePath: string): string | undefined {
return SESSION_STORE_SERIALIZED_CACHE.get(storePath);
}
export function setSerializedSessionStore(storePath: string, serialized?: string): void {
if (serialized === undefined) {
SESSION_STORE_SERIALIZED_CACHE.delete(storePath);
return;
}
SESSION_STORE_SERIALIZED_CACHE.set(storePath, serialized);
}
export function dropSessionStoreObjectCache(storePath: string): void {
SESSION_STORE_CACHE.delete(storePath);
}
export function readSessionStoreCache(params: {
storePath: string;
mtimeMs?: number;
sizeBytes?: number;
}): Record<string, SessionEntry> | null {
const cached = SESSION_STORE_CACHE.get(params.storePath);
if (!cached) {
return null;
}
if (params.mtimeMs !== cached.mtimeMs || params.sizeBytes !== cached.sizeBytes) {
invalidateSessionStoreCache(params.storePath);
return null;
}
return structuredClone(cached.store);
}
export function writeSessionStoreCache(params: {
storePath: string;
store: Record<string, SessionEntry>;
mtimeMs?: number;
sizeBytes?: number;
serialized?: string;
}): void {
SESSION_STORE_CACHE.set(params.storePath, {
store: structuredClone(params.store),
mtimeMs: params.mtimeMs,
sizeBytes: params.sizeBytes,
serialized: params.serialized,
});
if (params.serialized !== undefined) {
SESSION_STORE_SERIALIZED_CACHE.set(params.storePath, params.serialized);
}
}
¤ Dauer der Verarbeitung: 0.28 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland