openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
67 lines (66 loc) • 2.52 kB
JavaScript
import { n as hasNonTextEmbeddingParts } from "./embedding-chunk-limits-J6OR7lDp.mjs";
import { n as mapBatchEmbeddingsByIndex, r as sanitizeEmbeddingCacheHeaders, t as isMissingEmbeddingApiKeyError } from "./embedding-provider-adapter-utils-B17PVn9L.mjs";
import "./memory-core-host-engine-embeddings-D4RTPmUb.mjs";
import { i as isGeminiEmbedding2Model, n as buildGeminiEmbeddingRequest, r as createGeminiEmbeddingProvider, t as DEFAULT_GEMINI_EMBEDDING_MODEL } from "./embedding-provider-CwOEFHz3.mjs";
import { t as runGeminiEmbeddingBatches } from "./embedding-batch-D3v5LQiZ.mjs";
//#region extensions/google/memory-embedding-adapter.ts
const geminiMemoryEmbeddingProviderAdapter = {
id: "gemini",
defaultModel: DEFAULT_GEMINI_EMBEDDING_MODEL,
transport: "remote",
authProviderId: "google",
autoSelectPriority: 30,
allowExplicitWhenConfiguredAuto: true,
supportsMultimodalEmbeddings: ({ model }) => isGeminiEmbedding2Model(model),
shouldContinueAutoSelection: isMissingEmbeddingApiKeyError,
create: async (options) => {
const { provider, client } = await createGeminiEmbeddingProvider({
...options,
provider: "gemini",
fallback: "none"
});
return {
provider,
runtime: {
id: "gemini",
cacheKeyData: {
provider: "gemini",
baseUrl: client.baseUrl,
model: client.model,
outputDimensionality: client.outputDimensionality,
headers: sanitizeEmbeddingCacheHeaders(client.headers, [
"authorization",
"x-goog-api-key",
"x-goog-api-client"
])
},
batchEmbed: async (batch) => {
if (batch.chunks.some((chunk) => hasNonTextEmbeddingParts(chunk.embeddingInput))) return null;
const byCustomId = await runGeminiEmbeddingBatches({
gemini: client,
agentId: batch.agentId,
requests: batch.chunks.map((chunk, index) => ({
custom_id: String(index),
request: buildGeminiEmbeddingRequest({
input: chunk.embeddingInput ?? { text: chunk.text },
model: client.model,
role: "document",
taskType: "RETRIEVAL_DOCUMENT",
modelPath: client.modelPath,
outputDimensionality: client.outputDimensionality
})
})),
wait: batch.wait,
concurrency: batch.concurrency,
pollIntervalMs: batch.pollIntervalMs,
timeoutMs: batch.timeoutMs,
debug: batch.debug
});
return mapBatchEmbeddingsByIndex(byCustomId, batch.chunks.length);
}
}
};
}
};
//#endregion
export { geminiMemoryEmbeddingProviderAdapter as t };