Files
openclaw/src/plugins/embedding-provider-runtime.ts
Bob ae4806ed9a feat(plugins): add embedding provider contract (#84947)
Summary:
- Merged feat(plugins): add embedding provider contract after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: chore(plugins): refresh embedding provider sdk baseline
- PR branch already contained follow-up commit before automerge: docs(plugins): document embedding provider contract
- PR branch already contained follow-up commit before automerge: fix(plugins): restore embedding providers after snapshot loads
- PR branch already contained follow-up commit before automerge: fix(plugins): resolve embedding providers from manifests
- PR branch already contained follow-up commit before automerge: fix(plugin-sdk): keep embedding provider registry mutators internal
- PR branch already contained follow-up commit before automerge: chore(plugin-sdk): refresh embedding provider API baseline

Validation:
- ClawSweeper review passed for head 41ebd66ab4.
- Required merge gates passed before the squash merge.

Prepared head SHA: 41ebd66ab4
Review: https://github.com/openclaw/openclaw/pull/84947#issuecomment-4514762026

Co-authored-by: Bob <dutifulbob@gmail.com>
Co-authored-by: Mariano Belinky <mbelinky@gmail.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: osolmaz
Co-authored-by: osolmaz <2453968+osolmaz@users.noreply.github.com>
2026-05-22 03:36:51 +00:00

57 lines
1.6 KiB
TypeScript

import type { OpenClawConfig } from "../config/types.openclaw.js";
import {
resolvePluginCapabilityProvider,
resolvePluginCapabilityProviders,
} from "./capability-provider-runtime.js";
import {
getRegisteredEmbeddingProvider,
listRegisteredEmbeddingProviders,
type EmbeddingProviderAdapter,
} from "./embedding-providers.js";
export { listRegisteredEmbeddingProviders };
export function listRegisteredEmbeddingProviderAdapters(): EmbeddingProviderAdapter[] {
return listRegisteredEmbeddingProviders().map((entry) => entry.adapter);
}
export function listEmbeddingProviders(cfg?: OpenClawConfig): EmbeddingProviderAdapter[] {
const registered = listRegisteredEmbeddingProviderAdapters();
const merged = new Map(registered.map((adapter) => [adapter.id, adapter]));
for (const adapter of resolvePluginCapabilityProviders({
key: "embeddingProviders",
cfg,
})) {
if (!merged.has(adapter.id)) {
merged.set(adapter.id, adapter);
}
}
return [...merged.values()];
}
export function getEmbeddingProvider(
id: string,
cfg?: OpenClawConfig,
): EmbeddingProviderAdapter | undefined {
const registered = getRegisteredEmbeddingProvider(id);
if (registered) {
return registered.adapter;
}
return resolvePluginCapabilityProvider({
key: "embeddingProviders",
providerId: id,
cfg,
});
}
export type {
EmbeddingInput,
EmbeddingProvider,
EmbeddingProviderAdapter,
EmbeddingProviderCallOptions,
EmbeddingProviderCreateOptions,
EmbeddingProviderCreateResult,
EmbeddingProviderRuntime,
RegisteredEmbeddingProvider,
} from "./embedding-providers.js";