Files
openclaw/src/plugins/runtime.ts
2026-02-15 19:05:00 +00:00

42 lines
1.0 KiB
TypeScript

import { createEmptyPluginRegistry, type PluginRegistry } from "./registry.js";
const REGISTRY_STATE = Symbol.for("openclaw.pluginRegistryState");
type RegistryState = {
registry: PluginRegistry | null;
key: string | null;
};
const state: RegistryState = (() => {
const globalState = globalThis as typeof globalThis & {
[REGISTRY_STATE]?: RegistryState;
};
if (!globalState[REGISTRY_STATE]) {
globalState[REGISTRY_STATE] = {
registry: createEmptyPluginRegistry(),
key: null,
};
}
return globalState[REGISTRY_STATE];
})();
export function setActivePluginRegistry(registry: PluginRegistry, cacheKey?: string) {
state.registry = registry;
state.key = cacheKey ?? null;
}
export function getActivePluginRegistry(): PluginRegistry | null {
return state.registry;
}
export function requireActivePluginRegistry(): PluginRegistry {
if (!state.registry) {
state.registry = createEmptyPluginRegistry();
}
return state.registry;
}
export function getActivePluginRegistryKey(): string | null {
return state.key;
}