openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
112 lines (111 loc) • 4.21 kB
JavaScript
import { t as formatErrorMessage } from "./errors-Db3Ymjlb.js";
import { t as getMemoryEmbeddingProvider } from "./memory-embedding-provider-runtime-6fQgM2Qk.js";
import "./memory-core-host-engine-embeddings-DwuZ1cl_.js";
import "./dreaming-shared-BQNg89r7.js";
import { i as createMissingLocalMemoryEmbeddingProviderError } from "./local-embedding-provider-BYt5VAF8.js";
//#region extensions/memory-core/src/memory/embeddings.ts
const DEFAULT_MEMORY_EMBEDDING_PROVIDER = "openai";
function formatProviderError(adapter, err) {
return adapter.formatSetupError?.(err) ?? formatErrorMessage(err);
}
function getAdapter(id, config) {
const adapter = getMemoryEmbeddingProvider(id, config);
if (adapter) return adapter;
if (id === "local") throw createMissingLocalMemoryEmbeddingProviderError();
throw new Error(`Unknown memory embedding provider: ${id}`);
}
function resolveAdapterCreateOptions(adapter, options) {
const { outputDimensionality, ...base } = options;
const createOptions = {
...base,
fallback: "none",
model: options.model.trim() || adapter.defaultModel || "",
...typeof outputDimensionality === "number" ? { dimensions: outputDimensionality } : {}
};
return {
...createOptions,
model: adapter.normalizeModel?.(createOptions) ?? createOptions.model
};
}
function resolveEmbeddingProviderFallbackModel(providerId, fallbackSourceModel, config) {
return getMemoryEmbeddingProvider(providerId, config)?.defaultModel ?? fallbackSourceModel;
}
function resolveEmbeddingProviderFallbackRemote(remote) {
if (!remote) return;
const { baseUrl: _baseUrl, apiKey: _apiKey, headers: _headers, ...sharedRemote } = remote;
return Object.keys(sharedRemote).length > 0 ? sharedRemote : void 0;
}
function resolveEmbeddingProviderAdapterTransport(providerId, config) {
try {
return getAdapter(providerId, config).transport;
} catch {
return;
}
}
function resolveEmbeddingProviderIndexIdentity(options) {
const provider = options.provider === "auto" ? DEFAULT_MEMORY_EMBEDDING_PROVIDER : options.provider;
try {
const adapter = getAdapter(provider, options.config);
const createOptions = resolveAdapterCreateOptions(adapter, {
...options,
provider
});
const identity = adapter.resolveIndexIdentity?.(createOptions);
return {
provider: {
id: adapter.id,
model: identity?.model ?? createOptions.model
},
cacheKeyData: identity?.cacheKeyData,
aliases: identity?.aliases
};
} catch {
return;
}
}
async function createWithAdapter(adapter, options) {
const createOptions = resolveAdapterCreateOptions(adapter, options);
const result = await adapter.create(createOptions);
return {
provider: result.provider,
requestedProvider: options.provider,
runtime: result.runtime
};
}
async function createEmbeddingProvider(options) {
const provider = options.provider === "auto" ? DEFAULT_MEMORY_EMBEDDING_PROVIDER : options.provider;
const primaryAdapter = getAdapter(provider, options.config);
try {
return await createWithAdapter(primaryAdapter, {
...options,
provider
});
} catch (primaryErr) {
const reason = formatProviderError(primaryAdapter, primaryErr);
if (options.fallback && options.fallback !== "none" && options.fallback !== provider) {
const fallbackAdapter = getAdapter(options.fallback, options.config);
try {
return {
...await createWithAdapter(fallbackAdapter, {
...options,
provider: options.fallback,
remote: resolveEmbeddingProviderFallbackRemote(options.remote)
}),
requestedProvider: provider,
fallbackFrom: provider,
fallbackReason: reason
};
} catch (fallbackErr) {
const fallbackReason = formatProviderError(fallbackAdapter, fallbackErr);
const wrapped = /* @__PURE__ */ new Error(`${reason}\n\nFallback to ${options.fallback} failed: ${fallbackReason}`);
wrapped.cause = primaryErr;
throw wrapped;
}
}
const wrapped = new Error(reason);
wrapped.cause = primaryErr;
throw wrapped;
}
}
//#endregion
export { resolveEmbeddingProviderIndexIdentity as a, resolveEmbeddingProviderFallbackRemote as i, resolveEmbeddingProviderAdapterTransport as n, resolveEmbeddingProviderFallbackModel as r, createEmbeddingProvider as t };