@@ -2,6 +2,8 @@ import { OpenAICompatibleEmbedder } from "./openai-compatible"
22import { IEmbedder , EmbeddingResponse , EmbedderInfo } from "../interfaces/embedder"
33import { GEMINI_MAX_ITEM_TOKENS } from "../constants"
44import { t } from "../../../i18n"
5+ import { TelemetryEventName } from "@roo-code/types"
6+ import { TelemetryService } from "@roo-code/telemetry"
57
68/**
79 * Gemini embedder implementation that wraps the OpenAI Compatible embedder
@@ -43,18 +45,36 @@ export class GeminiEmbedder implements IEmbedder {
4345 * @returns Promise resolving to embedding response
4446 */
4547 async createEmbeddings ( texts : string [ ] , model ?: string ) : Promise < EmbeddingResponse > {
46- // Always use the fixed Gemini model, ignoring any passed model parameter
47- return this . openAICompatibleEmbedder . createEmbeddings ( texts , GeminiEmbedder . GEMINI_MODEL )
48+ try {
49+ // Always use the fixed Gemini model, ignoring any passed model parameter
50+ return await this . openAICompatibleEmbedder . createEmbeddings ( texts , GeminiEmbedder . GEMINI_MODEL )
51+ } catch ( error ) {
52+ TelemetryService . instance . captureEvent ( TelemetryEventName . CODE_INDEX_ERROR , {
53+ error : error instanceof Error ? error . message : String ( error ) ,
54+ stack : error instanceof Error ? error . stack : undefined ,
55+ location : "GeminiEmbedder:createEmbeddings" ,
56+ } )
57+ throw error
58+ }
4859 }
4960
5061 /**
5162 * Validates the Gemini embedder configuration by delegating to the underlying OpenAI-compatible embedder
5263 * @returns Promise resolving to validation result with success status and optional error message
5364 */
5465 async validateConfiguration ( ) : Promise < { valid : boolean ; error ?: string } > {
55- // Delegate validation to the OpenAI-compatible embedder
56- // The error messages will be specific to Gemini since we're using Gemini's base URL
57- return this . openAICompatibleEmbedder . validateConfiguration ( )
66+ try {
67+ // Delegate validation to the OpenAI-compatible embedder
68+ // The error messages will be specific to Gemini since we're using Gemini's base URL
69+ return await this . openAICompatibleEmbedder . validateConfiguration ( )
70+ } catch ( error ) {
71+ TelemetryService . instance . captureEvent ( TelemetryEventName . CODE_INDEX_ERROR , {
72+ error : error instanceof Error ? error . message : String ( error ) ,
73+ stack : error instanceof Error ? error . stack : undefined ,
74+ location : "GeminiEmbedder:validateConfiguration" ,
75+ } )
76+ throw error
77+ }
5878 }
5979
6080 /**
0 commit comments