Преглед изворни кода

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 недеља
родитељ
комит
4384081070
1 измењених фајлова са 4 додато и 2 уклоњено
  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 });