refactor(pi): share session manager runtime registry

This commit is contained in:
Peter Steinberger
2026-02-15 17:39:10 +00:00
parent c6b3736fe7
commit 9084c4e345
4 changed files with 60 additions and 55 deletions

View File

@@ -0,0 +1,29 @@
export function createSessionManagerRuntimeRegistry<TValue>() {
// Session-scoped runtime registry keyed by object identity.
// The SessionManager instance must stay stable across set/get calls.
const registry = new WeakMap<object, TValue>();
const set = (sessionManager: unknown, value: TValue | null): void => {
if (!sessionManager || typeof sessionManager !== "object") {
return;
}
const key = sessionManager;
if (value === null) {
registry.delete(key);
return;
}
registry.set(key, value);
};
const get = (sessionManager: unknown): TValue | null => {
if (!sessionManager || typeof sessionManager !== "object") {
return null;
}
return registry.get(sessionManager) ?? null;
};
return { set, get };
}