refactor: move bundled plugin policy into manifests

This commit is contained in:
Peter Steinberger
2026-03-27 16:38:41 +00:00
parent ed055f44ae
commit ef1784d264
80 changed files with 874 additions and 459 deletions

View File

@@ -22,6 +22,15 @@ import {
type MemoryEmbeddingProviderAdapter,
} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
import { resolveUserPath } from "openclaw/plugin-sdk/memory-core-host-engine-foundation";
import { getProviderEnvVars } from "openclaw/plugin-sdk/provider-env-vars";
export type BuiltinMemoryEmbeddingProviderDoctorMetadata = {
providerId: string;
authProviderId: string;
envVars: string[];
transport: "local" | "remote";
autoSelectPriority?: number;
};
function formatErrorMessage(err: unknown): string {
return err instanceof Error ? err.message : String(err);
@@ -107,6 +116,10 @@ function supportsGeminiMultimodalEmbeddings(model: string): boolean {
return normalized === "gemini-embedding-2-preview";
}
function resolveMemoryEmbeddingAuthProviderId(providerId: string): string {
return providerId === "gemini" ? "google" : providerId;
}
const openAiAdapter: MemoryEmbeddingProviderAdapter = {
id: "openai",
defaultModel: DEFAULT_OPENAI_EMBEDDING_MODEL,
@@ -356,6 +369,36 @@ export function registerBuiltInMemoryEmbeddingProviders(register: {
}
}
export function getBuiltinMemoryEmbeddingProviderDoctorMetadata(
providerId: string,
): BuiltinMemoryEmbeddingProviderDoctorMetadata | null {
const adapter = getBuiltinMemoryEmbeddingProviderAdapter(providerId);
if (!adapter) {
return null;
}
const authProviderId = resolveMemoryEmbeddingAuthProviderId(adapter.id);
return {
providerId: adapter.id,
authProviderId,
envVars: getProviderEnvVars(authProviderId),
transport: adapter.transport === "local" ? "local" : "remote",
autoSelectPriority: adapter.autoSelectPriority,
};
}
export function listBuiltinAutoSelectMemoryEmbeddingProviderDoctorMetadata(): Array<BuiltinMemoryEmbeddingProviderDoctorMetadata> {
return builtinMemoryEmbeddingProviderAdapters
.filter((adapter) => typeof adapter.autoSelectPriority === "number")
.toSorted((a, b) => (a.autoSelectPriority ?? 0) - (b.autoSelectPriority ?? 0))
.map((adapter) => ({
providerId: adapter.id,
authProviderId: resolveMemoryEmbeddingAuthProviderId(adapter.id),
envVars: getProviderEnvVars(resolveMemoryEmbeddingAuthProviderId(adapter.id)),
transport: adapter.transport === "local" ? "local" : "remote",
autoSelectPriority: adapter.autoSelectPriority,
}));
}
export {
DEFAULT_GEMINI_EMBEDDING_MODEL,
DEFAULT_LOCAL_MODEL,

View File

@@ -1,5 +1,5 @@
import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core";
import { expect } from "vitest";
import type { OpenClawConfig } from "../api.js";
import { createMemoryGetTool, createMemorySearchTool } from "./tools.js";
export function asOpenClawConfig(config: Partial<OpenClawConfig>): OpenClawConfig {