Bläddra i källkod

fix(embedding): don't pass llama-cpp session.signal to remote OpenAI provider

When node-llama-cpp Vulkan build fails and falls back to CPU, the session
signal can be in an aborted state. Passing this aborted signal to
OpenAIEmbeddingsProvider.embed() caused it to return null immediately
without making any HTTP request (short-circuit at line 446 openai.ts).

Fix: only pass session.signal when provider.kind === 'local'. Remote
providers have their own timeout mechanism (DEFAULT_TIMEOUT_MS=30000).

Generated with [Claude Code](https://claude.ai/code)
via [Oivo](https://oivo.com)

Co-Authored-By: Claude <noreply@anthropic.com>
root 3 veckor sedan
förälder
incheckning
4384081070
1 ändrade filer med 4 tillägg och 2 borttagningar
  1. 4 2
      src/store.ts

+ 4 - 2
src/store.ts

@@ -1492,7 +1492,8 @@ export async function generateEmbeddings(
       modelArg: string,
     ): Promise<{ embedding: number[]; model: string } | null> => {
       if (provider) {
-        const r = await provider.embed(text, { model: modelArg, signal: session.signal });
+        const sig = provider.kind === 'local' ? session.signal : undefined;
+        const r = await provider.embed(text, { model: modelArg, signal: sig });
         return r ? { embedding: r.embedding, model: r.model } : null;
       }
       return session.embed(text, { model: modelArg });
@@ -1502,7 +1503,8 @@ export async function generateEmbeddings(
       modelArg: string,
     ): Promise<({ embedding: number[]; model: string } | null)[]> => {
       if (provider) {
-        const r = await provider.embedBatch(texts, { model: modelArg, signal: session.signal });
+        const sig = provider.kind === 'local' ? session.signal : undefined;
+        const r = await provider.embedBatch(texts, { model: modelArg, signal: sig });
         return r.map((x) => (x ? { embedding: x.embedding, model: x.model } : null));
       }
       return session.embedBatch(texts, { model: modelArg });