Files
openclaw/src/plugins/memory-embedding-provider-runtime.ts
Joseph Krug daab68efc8 fix(plugins): load memory embedding provider owners at startup
Gateway startup now includes plugin owners for explicit memorySearch.provider and memorySearch.fallback values, including custom models.providers API owners and generic embedding provider contracts.

Sentinel and disabled paths keep existing startup behavior for auto, local, none, disabled memory search, and disabled memory slots.

Adds post-runtime-load diagnostics for configured memory embedding providers that remain unregistered.

Closes #89651

Co-authored-by: Joseph Krug <5925937+joeykrug@users.noreply.github.com>
2026-06-07 00:44:06 +08:00

60 lines
2.1 KiB
TypeScript

// Runtime bridge for plugin-provided memory embedding providers.
import type { OpenClawConfig } from "../config/types.openclaw.js";
import { readConfiguredProviderApiId } from "./embedding-provider-config.js";
import {
getRuntimeEmbeddingProviderAdapter,
listRuntimeEmbeddingProviderAdapters,
resolveRuntimeEmbeddingProviderLookupIds,
} from "./embedding-provider-runtime-shared.js";
import {
getRegisteredMemoryEmbeddingProvider,
listRegisteredMemoryEmbeddingProviders,
type MemoryEmbeddingProviderAdapter,
} from "./memory-embedding-providers.js";
export { listRegisteredMemoryEmbeddingProviders };
/** Lists registered memory embedding provider adapters without registry metadata. */
export function listRegisteredMemoryEmbeddingProviderAdapters(): MemoryEmbeddingProviderAdapter[] {
return listRegisteredMemoryEmbeddingProviders().map((entry) => entry.adapter);
}
/** Lists memory embedding providers from runtime config and registered adapters. */
export function listMemoryEmbeddingProviders(
cfg?: OpenClawConfig,
): MemoryEmbeddingProviderAdapter[] {
return listRuntimeEmbeddingProviderAdapters({
key: "memoryEmbeddingProviders",
cfg,
registered: listRegisteredMemoryEmbeddingProviderAdapters(),
});
}
function resolveConfiguredMemoryEmbeddingProviderId(
providerId: string,
cfg?: OpenClawConfig,
): string | undefined {
return readConfiguredProviderApiId({ providerId, cfg });
}
function resolveMemoryEmbeddingProviderLookupIds(id: string, cfg?: OpenClawConfig): string[] {
return resolveRuntimeEmbeddingProviderLookupIds({
id,
cfg,
resolveConfiguredProviderId: resolveConfiguredMemoryEmbeddingProviderId,
});
}
/** Resolves one memory embedding provider by id, alias, or configured API owner. */
export function getMemoryEmbeddingProvider(
id: string,
cfg?: OpenClawConfig,
): MemoryEmbeddingProviderAdapter | undefined {
return getRuntimeEmbeddingProviderAdapter({
key: "memoryEmbeddingProviders",
cfg,
lookupIds: resolveMemoryEmbeddingProviderLookupIds(id, cfg),
getRegisteredProvider: getRegisteredMemoryEmbeddingProvider,
});
}