/** * Memory provider registry — the indirection layer that lets a plugin * replace Valora's bundled memory implementation. * * Mirrors `src/llm/registry.ts` (LLM provider registry) but for memory: * registered providers are identified by a string key, owners are tracked * to detect plugin-collision, and at most one provider is "active" at a * time. Core consumers (executor, CLI, MCP shutdown) call * `getMemoryRegistry().getActive()` and program against the * `MemoryProvider` contract rather than instantiating a concrete store. */ import type { MemoryProvider, MemoryProviderDescriptor } from '../types/memory.types.js'; import { ProviderError } from '../utils/error-handler.js'; export interface RegisterMemoryProviderOptions { override?: boolean; owner?: string; } type MemoryProviderClass = new (config: Record) => MemoryProvider; type MemoryProviderEntry = MemoryProviderClass | MemoryProviderFactoryFn; type MemoryProviderFactoryFn = (config: Record) => MemoryProvider; export declare class MemoryProviderConflictError extends ProviderError { readonly existingOwner: string; readonly incomingOwner: string; readonly providerKey: string; constructor(key: string, existingOwner: string, incomingOwner: string); } export declare class MemoryProviderRegistry { private activeInstance; private activeName; private descriptors; private owners; private providers; constructor(); getActive(): MemoryProvider; getActiveName(): string | undefined; getAvailableProviders(): string[]; getDescriptor(name: string): MemoryProviderDescriptor | undefined; getOwner(name: string): string | undefined; hasActive(): boolean; hasProvider(name: string): boolean; registerProvider(name: string, entry: MemoryProviderEntry, options?: RegisterMemoryProviderOptions, descriptor?: MemoryProviderDescriptor): void; setActive(name: string, config: Record): void; } export declare function getMemoryRegistry(): MemoryProviderRegistry; export declare function resetMemoryRegistry(): void; export {}; //# sourceMappingURL=registry.d.ts.map