From 51c6244683791266a3dffcd000bebf3d4437e0b3 Mon Sep 17 00:00:00 2001 From: pineapplestrikesback Date: Mon, 16 Mar 2026 16:20:30 +0100 Subject: [PATCH] fix: only call ensureOllamaReady() when using Ollama embedding provider The codebase_search handler unconditionally called ensureOllamaReady() regardless of the configured EMBEDDING_PROVIDER. This caused search to fail for OpenAI and Google embedding users because: - OLLAMA_MODE=auto/docker: creates an Ollama Docker container and tries to pull the configured model (e.g. text-embedding-3-large) from Ollama's registry, which fails since it's an OpenAI model - OLLAMA_MODE=external: tries to reach localhost:11434, fails with "Ollama is not reachable" Now ensureOllamaReady() is only called when embeddingProvider === "ollama". For other providers, getEmbeddingProvider() is called to ensure the provider singleton is initialized. Fixes #7 --- src/tools/query-tools.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tools/query-tools.ts b/src/tools/query-tools.ts index 1c254fd..0a4d5bc 100644 --- a/src/tools/query-tools.ts +++ b/src/tools/query-tools.ts @@ -6,6 +6,8 @@ import { SEARCH_DEFAULT_LIMIT, SEARCH_MIN_SCORE } from "../constants.js"; import { getGraphStatus } from "../services/code-graph.js"; import { getArtifactStatusSummary } from "../services/context-artifacts.js"; import { ensureQdrantReady } from "../services/docker.js"; +import { getEmbeddingConfig } from "../services/embedding-config.js"; +import { getEmbeddingProvider } from "../services/embedding-provider.js"; import type { IndexingProgress } from "../services/indexer.js"; import { getIndexingProgress, getLastCompleted, isIndexingInProgress } from "../services/indexer.js"; import { getLockHolderPid, } from "../services/lock.js"; @@ -57,7 +59,13 @@ export async function handleQueryTool( switch (name) { case "codebase_search": { await ensureQdrantReady(); - await ensureOllamaReady(); + // Only ensure Ollama infrastructure when using the Ollama embedding provider. + // For OpenAI/Google providers, just ensure the provider is initialized. + if (getEmbeddingConfig().embeddingProvider === "ollama") { + await ensureOllamaReady(); + } else { + await getEmbeddingProvider(); + } const query = args.query as string; const limit = (args.limit as number) || SEARCH_DEFAULT_LIMIT;