From 90f56760e05db20ab8e12320afb4c5f1ef5d7648 Mon Sep 17 00:00:00 2001 From: antpb Date: Thu, 21 Nov 2024 22:06:10 -0600 Subject: [PATCH 1/3] wrap in try to allow non node env to build --- packages/core/src/embedding.ts | 36 +++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/packages/core/src/embedding.ts b/packages/core/src/embedding.ts index 0bbc51a818f..eb05313b174 100644 --- a/packages/core/src/embedding.ts +++ b/packages/core/src/embedding.ts @@ -126,10 +126,31 @@ async function getLocalEmbedding(input: string): Promise { process.versions != null && process.versions.node != null; - if (isNode) { - const fs = await import("fs"); - const { FlagEmbedding } = await import("fastembed"); - const { fileURLToPath } = await import("url"); + if (!isNode) { + elizaLogger.warn( + "Local embedding not supported in browser, falling back to remote embedding" + ); + throw new Error("Local embedding not supported in browser"); + } + + try { + // Try to dynamically import all required Node.js modules + const moduleImports = await Promise.all([ + import("fs"), + import("url"), + // Wrap fastembed import in a try-catch to prevent build errors for non-Node.js environments. + (async () => { + try { + return await import("fastembed"); + } catch (error) { + elizaLogger.error("Failed to load fastembed:", error); + throw new Error("fastembed import failed, falling back to remote embedding"); + } + })() + ]); + + const [fs, { fileURLToPath }, fastEmbed] = moduleImports; + const { FlagEmbedding } = fastEmbed; function getRootPath() { const __filename = fileURLToPath(import.meta.url); @@ -156,11 +177,8 @@ async function getLocalEmbedding(input: string): Promise { const trimmedInput = trimTokens(input, 8000, "gpt-4o-mini"); const embedding = await embeddingModel.queryEmbed(trimmedInput); return embedding; - } else { - // Browser implementation - fallback to remote embedding - elizaLogger.warn( - "Local embedding not supported in browser, falling back to remote embedding" - ); + } catch (error) { + elizaLogger.warn("Local embedding not supported in browser, falling back to remote embedding:", error); throw new Error("Local embedding not supported in browser"); } } From 73a4bfd31996aecf1b65e5fc298cfbbdde18ef77 Mon Sep 17 00:00:00 2001 From: antpb Date: Thu, 21 Nov 2024 22:12:58 -0600 Subject: [PATCH 2/3] consistent error --- packages/core/src/embedding.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/embedding.ts b/packages/core/src/embedding.ts index eb05313b174..01c329501f7 100644 --- a/packages/core/src/embedding.ts +++ b/packages/core/src/embedding.ts @@ -143,7 +143,7 @@ async function getLocalEmbedding(input: string): Promise { try { return await import("fastembed"); } catch (error) { - elizaLogger.error("Failed to load fastembed:", error); + elizaLogger.error("Failed to load fastembed,"); throw new Error("fastembed import failed, falling back to remote embedding"); } })() From a0c2bb8fd06423cdc05a075bfa0d5f7223a62754 Mon Sep 17 00:00:00 2001 From: antpb Date: Thu, 21 Nov 2024 22:14:43 -0600 Subject: [PATCH 3/3] fix other eliza error --- packages/core/src/embedding.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/embedding.ts b/packages/core/src/embedding.ts index 01c329501f7..afe10984214 100644 --- a/packages/core/src/embedding.ts +++ b/packages/core/src/embedding.ts @@ -143,7 +143,7 @@ async function getLocalEmbedding(input: string): Promise { try { return await import("fastembed"); } catch (error) { - elizaLogger.error("Failed to load fastembed,"); + elizaLogger.error("Failed to load fastembed."); throw new Error("fastembed import failed, falling back to remote embedding"); } })() @@ -178,7 +178,7 @@ async function getLocalEmbedding(input: string): Promise { const embedding = await embeddingModel.queryEmbed(trimmedInput); return embedding; } catch (error) { - elizaLogger.warn("Local embedding not supported in browser, falling back to remote embedding:", error); + elizaLogger.warn("Local embedding not supported in browser, falling back to remote embedding."); throw new Error("Local embedding not supported in browser"); } }