@@ -143,43 +143,43 @@ private decimal CalculateExaSearchCost(ExaHybridPricingConfig config, FunctionEx
143143 {
144144 case "neural" :
145145 // Determine tier based on result count
146- if ( resultCount <= ( config . SearchCosts . Neural . Tier1 . MaxResults ?? 25 ) )
146+ if ( resultCount <= ( config . SearchCosts ? . Neural ? . Tier1 . MaxResults ?? 25 ) )
147147 {
148- searchCost = config . SearchCosts . Neural . Tier1 . Cost ;
148+ searchCost = config . SearchCosts ? . Neural ? . Tier1 . Cost ?? 0m ;
149149 _logger . LogDebug ( "Neural search tier 1 (1-{Max} results): ${Cost}" ,
150- config . SearchCosts . Neural . Tier1 . MaxResults ?? 25 , searchCost ) ;
150+ config . SearchCosts ? . Neural ? . Tier1 . MaxResults ?? 25 , searchCost ) ;
151151 }
152152 else
153153 {
154- searchCost = config . SearchCosts . Neural . Tier2 . Cost ;
154+ searchCost = config . SearchCosts ? . Neural ? . Tier2 . Cost ?? 0m ;
155155 _logger . LogDebug ( "Neural search tier 2 ({Min}+ results): ${Cost}" ,
156- ( config . SearchCosts . Neural . Tier1 . MaxResults ?? 25 ) + 1 , searchCost ) ;
156+ ( config . SearchCosts ? . Neural ? . Tier1 . MaxResults ?? 25 ) + 1 , searchCost ) ;
157157 }
158158 break ;
159159
160160 case "keyword" :
161- searchCost = config . SearchCosts . Keyword . Cost ;
161+ searchCost = config . SearchCosts ? . Keyword ? . Cost ?? 0m ;
162162 _logger . LogDebug ( "Keyword search (any results): ${Cost}" , searchCost ) ;
163163 break ;
164164
165165 case "auto" :
166166 // Auto mode: use conservative estimate (keyword pricing by default, or neural tier 1 if configured)
167- if ( config . SearchCosts . Auto ? . FallbackToKeyword == true )
167+ if ( config . SearchCosts ? . Auto ? . FallbackToKeyword == true )
168168 {
169- searchCost = config . SearchCosts . Keyword . Cost ;
169+ searchCost = config . SearchCosts ? . Keyword ? . Cost ?? 0m ;
170170 _logger . LogDebug ( "Auto search (fallback to keyword pricing): ${Cost}" , searchCost ) ;
171171 }
172172 else
173173 {
174174 // Conservative: assume neural tier 1
175- searchCost = config . SearchCosts . Neural . Tier1 . Cost ;
175+ searchCost = config . SearchCosts ? . Neural ? . Tier1 . Cost ?? 0m ;
176176 _logger . LogDebug ( "Auto search (fallback to neural tier 1 pricing): ${Cost}" , searchCost ) ;
177177 }
178178 break ;
179179
180180 default :
181181 _logger . LogWarning ( "Unknown search type '{SearchType}', defaulting to keyword pricing" , searchType ) ;
182- searchCost = config . SearchCosts . Keyword . Cost ;
182+ searchCost = config . SearchCosts ? . Keyword ? . Cost ?? 0m ;
183183 break ;
184184 }
185185
0 commit comments