@@ -4,10 +4,12 @@ import type { Llama, LlamaEmbeddingContext, LlamaModel } from "node-llama-cpp";
44import type { MoltbotConfig } from "../config/config.js" ;
55import { resolveUserPath } from "../utils.js" ;
66import { createGeminiEmbeddingProvider , type GeminiEmbeddingClient } from "./embeddings-gemini.js" ;
7+ import { createMapleEmbeddingProvider , type MapleEmbeddingClient } from "./embeddings-maple.js" ;
78import { createOpenAiEmbeddingProvider , type OpenAiEmbeddingClient } from "./embeddings-openai.js" ;
89import { importNodeLlamaCpp } from "./node-llama.js" ;
910
1011export type { GeminiEmbeddingClient } from "./embeddings-gemini.js" ;
12+ export type { MapleEmbeddingClient } from "./embeddings-maple.js" ;
1113export type { OpenAiEmbeddingClient } from "./embeddings-openai.js" ;
1214
1315export type EmbeddingProvider = {
@@ -19,24 +21,25 @@ export type EmbeddingProvider = {
1921
2022export type EmbeddingProviderResult = {
2123 provider : EmbeddingProvider ;
22- requestedProvider : "openai" | "local" | "gemini" | "auto" ;
23- fallbackFrom ?: "openai" | "local" | "gemini" ;
24+ requestedProvider : "openai" | "local" | "gemini" | "maple" | " auto";
25+ fallbackFrom ?: "openai" | "local" | "gemini" | "maple" ;
2426 fallbackReason ?: string ;
2527 openAi ?: OpenAiEmbeddingClient ;
2628 gemini ?: GeminiEmbeddingClient ;
29+ maple ?: MapleEmbeddingClient ;
2730} ;
2831
2932export type EmbeddingProviderOptions = {
3033 config : MoltbotConfig ;
3134 agentDir ?: string ;
32- provider : "openai" | "local" | "gemini" | "auto" ;
35+ provider : "openai" | "local" | "gemini" | "maple" | " auto";
3336 remote ?: {
3437 baseUrl ?: string ;
3538 apiKey ?: string ;
3639 headers ?: Record < string , string > ;
3740 } ;
3841 model : string ;
39- fallback : "openai" | "gemini" | "local" | "none" ;
42+ fallback : "openai" | "gemini" | "local" | "maple" | " none";
4043 local ?: {
4144 modelPath ?: string ;
4245 modelCacheDir ?: string ;
@@ -116,7 +119,7 @@ export async function createEmbeddingProvider(
116119 const requestedProvider = options . provider ;
117120 const fallback = options . fallback ;
118121
119- const createProvider = async ( id : "openai" | "local" | "gemini" ) => {
122+ const createProvider = async ( id : "openai" | "local" | "gemini" | "maple" ) => {
120123 if ( id === "local" ) {
121124 const provider = await createLocalEmbeddingProvider ( options ) ;
122125 return { provider } ;
@@ -125,11 +128,15 @@ export async function createEmbeddingProvider(
125128 const { provider, client } = await createGeminiEmbeddingProvider ( options ) ;
126129 return { provider, gemini : client } ;
127130 }
131+ if ( id === "maple" ) {
132+ const { provider, client } = await createMapleEmbeddingProvider ( options ) ;
133+ return { provider, maple : client } ;
134+ }
128135 const { provider, client } = await createOpenAiEmbeddingProvider ( options ) ;
129136 return { provider, openAi : client } ;
130137 } ;
131138
132- const formatPrimaryError = ( err : unknown , provider : "openai" | "local" | "gemini" ) =>
139+ const formatPrimaryError = ( err : unknown , provider : "openai" | "local" | "gemini" | "maple" ) =>
133140 provider === "local" ? formatLocalSetupError ( err ) : formatError ( err ) ;
134141
135142 if ( requestedProvider === "auto" ) {
@@ -145,7 +152,8 @@ export async function createEmbeddingProvider(
145152 }
146153 }
147154
148- for ( const provider of [ "openai" , "gemini" ] as const ) {
155+ // OpenSecret fork: prefer maple when MAPLE_API_KEY is available
156+ for ( const provider of [ "maple" , "openai" , "gemini" ] as const ) {
149157 try {
150158 const result = await createProvider ( provider ) ;
151159 return { ...result , requestedProvider } ;
0 commit comments