Files
openclaw/src/plugin-sdk/runtime-store.ts
2026-03-16 21:16:32 -07:00

30 lines
685 B
TypeScript

export type { PluginRuntime } from "../plugins/runtime/types.js";
/** Create a tiny mutable runtime slot with strict access when the runtime has not been initialized. */
export function createPluginRuntimeStore<T>(errorMessage: string): {
setRuntime: (next: T) => void;
clearRuntime: () => void;
tryGetRuntime: () => T | null;
getRuntime: () => T;
} {
let runtime: T | null = null;
return {
setRuntime(next: T) {
runtime = next;
},
clearRuntime() {
runtime = null;
},
tryGetRuntime() {
return runtime;
},
getRuntime() {
if (!runtime) {
throw new Error(errorMessage);
}
return runtime;
},
};
}