mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-21 18:08:05 -06:00
e4d1b7e0d3
* refactor(plugins): move plugin contributions into the registry bundle * fix(plugins): guard embedding owner union and drop unused test-util imports * fix(plugins): break registry facade import cycles * fix(plugins): remove obsolete registry snapshot seams * test(gateway): preserve plugin runtime mock exports * test(auto-reply): install builder registry in diagnostics fixture * test(plugins): activate registry-backed capability fixtures
85 lines
2.6 KiB
TypeScript
85 lines
2.6 KiB
TypeScript
import type {
|
|
MemoryEmbeddingProviderAdapter,
|
|
RegisteredMemoryEmbeddingProvider,
|
|
} from "./registry-contribution-types.js";
|
|
import {
|
|
assertDirectPluginRegistrationReplacement,
|
|
requireActivePluginRegistry,
|
|
resolveDirectPluginRegistrationOwner,
|
|
} from "./runtime.js";
|
|
|
|
export type {
|
|
MemoryEmbeddingBatchChunk,
|
|
MemoryEmbeddingBatchOptions,
|
|
MemoryEmbeddingProvider,
|
|
MemoryEmbeddingProviderAdapter,
|
|
MemoryEmbeddingProviderCallOptions,
|
|
MemoryEmbeddingProviderCreateOptions,
|
|
MemoryEmbeddingProviderCreateResult,
|
|
MemoryEmbeddingProviderIndexIdentity,
|
|
MemoryEmbeddingProviderRuntime,
|
|
RegisteredMemoryEmbeddingProvider,
|
|
} from "./registry-contribution-types.js";
|
|
|
|
function getMemoryEmbeddingProviders(): RegisteredMemoryEmbeddingProvider[] {
|
|
return requireActivePluginRegistry().memoryEmbeddingProviders.map((entry) => ({
|
|
adapter: entry.provider,
|
|
ownerPluginId: entry.pluginId || undefined,
|
|
}));
|
|
}
|
|
|
|
export function registerMemoryEmbeddingProvider(
|
|
adapter: MemoryEmbeddingProviderAdapter,
|
|
options?: { ownerPluginId?: string },
|
|
): void {
|
|
const registry = requireActivePluginRegistry();
|
|
const pluginId = resolveDirectPluginRegistrationOwner(options?.ownerPluginId) ?? "";
|
|
const entry = {
|
|
pluginId,
|
|
provider: adapter,
|
|
source: "runtime",
|
|
};
|
|
const index = registry.memoryEmbeddingProviders.findIndex(
|
|
(registration) => registration.provider.id === adapter.id,
|
|
);
|
|
if (index !== -1) {
|
|
assertDirectPluginRegistrationReplacement(
|
|
registry.memoryEmbeddingProviders[index]?.pluginId || undefined,
|
|
`memory embedding provider ${adapter.id}`,
|
|
);
|
|
}
|
|
if (index === -1) {
|
|
registry.memoryEmbeddingProviders.push(entry);
|
|
} else {
|
|
registry.memoryEmbeddingProviders.splice(index, 1, entry);
|
|
}
|
|
}
|
|
|
|
export function getRegisteredMemoryEmbeddingProvider(
|
|
id: string,
|
|
): RegisteredMemoryEmbeddingProvider | undefined {
|
|
return getMemoryEmbeddingProviders().find((entry) => entry.adapter.id === id);
|
|
}
|
|
|
|
export function listRegisteredMemoryEmbeddingProviders(): RegisteredMemoryEmbeddingProvider[] {
|
|
return getMemoryEmbeddingProviders();
|
|
}
|
|
|
|
export function listMemoryEmbeddingProviders(): MemoryEmbeddingProviderAdapter[] {
|
|
return listRegisteredMemoryEmbeddingProviders().map((entry) => entry.adapter);
|
|
}
|
|
export function restoreRegisteredMemoryEmbeddingProviders(
|
|
entries: RegisteredMemoryEmbeddingProvider[],
|
|
): void {
|
|
clearMemoryEmbeddingProviders();
|
|
for (const entry of entries) {
|
|
registerMemoryEmbeddingProvider(entry.adapter, {
|
|
ownerPluginId: entry.ownerPluginId,
|
|
});
|
|
}
|
|
}
|
|
|
|
export function clearMemoryEmbeddingProviders(): void {
|
|
requireActivePluginRegistry().memoryEmbeddingProviders.length = 0;
|
|
}
|