mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import type { EffectiveContextPruningSettings } from "./settings.js";
|
|
|
|
export type ContextPruningRuntimeValue = {
|
|
settings: EffectiveContextPruningSettings;
|
|
contextWindowTokens?: number | null;
|
|
isToolPrunable: (toolName: string) => boolean;
|
|
lastCacheTouchAt?: number | null;
|
|
};
|
|
|
|
// Session-scoped runtime registry keyed by object identity.
|
|
// Important: this relies on Pi passing the same SessionManager object instance into
|
|
// ExtensionContext (ctx.sessionManager) that we used when calling setContextPruningRuntime.
|
|
const REGISTRY = new WeakMap<object, ContextPruningRuntimeValue>();
|
|
|
|
export function setContextPruningRuntime(
|
|
sessionManager: unknown,
|
|
value: ContextPruningRuntimeValue | null,
|
|
): void {
|
|
if (!sessionManager || typeof sessionManager !== "object") {
|
|
return;
|
|
}
|
|
|
|
const key = sessionManager;
|
|
if (value === null) {
|
|
REGISTRY.delete(key);
|
|
return;
|
|
}
|
|
|
|
REGISTRY.set(key, value);
|
|
}
|
|
|
|
export function getContextPruningRuntime(
|
|
sessionManager: unknown,
|
|
): ContextPruningRuntimeValue | null {
|
|
if (!sessionManager || typeof sessionManager !== "object") {
|
|
return null;
|
|
}
|
|
|
|
return REGISTRY.get(sessionManager) ?? null;
|
|
}
|