diff --git a/src/cli/commands/search.ts b/src/cli/commands/search.ts index 1650879af..8a349a2bb 100644 --- a/src/cli/commands/search.ts +++ b/src/cli/commands/search.ts @@ -1,5 +1,5 @@ import { collectFile } from '../../db/query-builder.js'; -import { search } from '../../domain/search/index.js'; +import { search } from '../../presentation/search.js'; import type { CommandDefinition } from '../types.js'; export const command: CommandDefinition = { diff --git a/src/domain/search/generator.ts b/src/domain/search/generator.ts index d9b47cf0a..61f5e037d 100644 --- a/src/domain/search/generator.ts +++ b/src/domain/search/generator.ts @@ -1,7 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { closeDb, findDbPath, getBuildMeta, openDb } from '../../db/index.js'; -import { warn } from '../../infrastructure/logger.js'; +import { info, warn } from '../../infrastructure/logger.js'; import { DbError } from '../../shared/errors.js'; import type { BetterSqlite3Database, NodeRow } from '../../types.js'; import { embed, getModelConfig } from './models.js'; @@ -242,7 +242,7 @@ export async function buildEmbeddings( const byFile = loadNodesByFile(db); const nodeCount = [...byFile.values()].reduce((acc, list) => acc + list.length, 0); - console.log(`Building embeddings for ${nodeCount} symbols (strategy: ${strategy})...`); + info(`Building embeddings for ${nodeCount} symbols (strategy: ${strategy})...`); let contextWindow: number; let displayName: string; @@ -275,7 +275,7 @@ export async function buildEmbeddings( ); } - console.log( + info( `Embedding ${prepared.texts.length} symbols${options.remote ? ` via remote provider (${displayName})` : ''}...`, ); const { vectors, dim } = options.remote @@ -289,7 +289,7 @@ export async function buildEmbeddings( const provider = options.remote ? 'openai' : null; persistEmbeddings(db, prepared, vectors as Float32Array[], dim, displayName, strategy, provider); - console.log( + info( `\nStored ${vectors.length} embeddings (${dim}d, ${displayName}, strategy: ${strategy}) in graph.db`, ); closeDb(db); diff --git a/src/domain/search/index.ts b/src/domain/search/index.ts index 6b7c355c6..a4f8bf682 100644 --- a/src/domain/search/index.ts +++ b/src/domain/search/index.ts @@ -10,7 +10,6 @@ export type { ModelConfig } from './models.js'; export { DEFAULT_MODEL, disposeModel, EMBEDDING_STRATEGIES, embed, MODELS } from './models.js'; export type { RemoteEmbeddingOptions } from './providers/remote.js'; export { embedRemote, resolveRemoteEmbeddingOptions } from './providers/remote.js'; -export { search } from './search/cli-formatter.js'; export { hybridSearchData } from './search/hybrid.js'; export { ftsSearchData } from './search/keyword.js'; export { multiSearchData, searchData } from './search/semantic.js'; diff --git a/src/domain/search/search/semantic.ts b/src/domain/search/search/semantic.ts index 07f8f4bb2..17c0b5e82 100644 --- a/src/domain/search/search/semantic.ts +++ b/src/domain/search/search/semantic.ts @@ -72,10 +72,10 @@ function rowVector(row: StoredRow): Float32Array { /** Warn when stored embeddings and the query model use different dimensions. */ function checkDimensionMismatch(storedDim: number | null, dim: number): boolean { if (storedDim && dim !== storedDim) { - console.log( - `Warning: query model dimension (${dim}) doesn't match stored embeddings (${storedDim}).`, + warn( + `Query model dimension (${dim}) doesn't match stored embeddings (${storedDim}). ` + + 'Re-run `codegraph embed` with the same model, or use --model to match.', ); - console.log(` Re-run \`codegraph embed\` with the same model, or use --model to match.`); return true; } return false; diff --git a/src/domain/search/search/cli-formatter.ts b/src/presentation/search.ts similarity index 93% rename from src/domain/search/search/cli-formatter.ts rename to src/presentation/search.ts index 44eeb4fb5..1f835fffe 100644 --- a/src/domain/search/search/cli-formatter.ts +++ b/src/presentation/search.ts @@ -1,8 +1,8 @@ -import { warn } from '../../../infrastructure/logger.js'; -import { hybridSearchData } from './hybrid.js'; -import { ftsSearchData } from './keyword.js'; -import type { SemanticSearchOpts } from './semantic.js'; -import { multiSearchData, searchData } from './semantic.js'; +import { hybridSearchData } from '../domain/search/search/hybrid.js'; +import { ftsSearchData } from '../domain/search/search/keyword.js'; +import type { SemanticSearchOpts } from '../domain/search/search/semantic.js'; +import { multiSearchData, searchData } from '../domain/search/search/semantic.js'; +import { warn } from '../infrastructure/logger.js'; interface SearchOpts extends SemanticSearchOpts { mode?: 'hybrid' | 'semantic' | 'keyword'; diff --git a/tests/search/embedder-search.test.ts b/tests/search/embedder-search.test.ts index 38582fd3f..d9924bbea 100644 --- a/tests/search/embedder-search.test.ts +++ b/tests/search/embedder-search.test.ts @@ -36,9 +36,9 @@ import { ftsSearchData, hybridSearchData, multiSearchData, - search, searchData, } from '../../src/domain/search/index.js'; +import { search } from '../../src/presentation/search.js'; // ─── Helpers ───────────────────────────────────────────────────────────