MCPcopy Create free account
hub / github.com/Noumena-Network/code / logAPIError

Function logAPIError

src/services/api/logging.ts:244–405  ·  view source on GitHub ↗
({
  error,
  model,
  messageCount,
  messageTokens,
  durationMs,
  durationMsIncludingRetries,
  attempt,
  requestId,
  clientRequestId,
  didFallBackToNonStreaming,
  promptCategory,
  headers,
  queryTracking,
  querySource,
  llmSpan,
  fastMode,
  previousRequestId,
}: {
  error: unknown
  model: string
  messageCount: number
  messageTokens?: number
  durationMs: number
  durationMsIncludingRetries: number
  attempt: number
  requestId?: string | null
  /** Client-generated ID sent as x-client-request-id header (survives timeouts) */
  clientRequestId?: string
  didFallBackToNonStreaming?: boolean
  promptCategory?: string
  headers?: globalThis.Headers
  queryTracking?: QueryChainTracking
  querySource?: string
  /** The span from startLLMRequestSpan - pass this to correctly match responses to requests */
  llmSpan?: Span
  fastMode?: boolean
  previousRequestId?: string | null
})

Source from the content-addressed store, hash-verified

242}
243
244export function logAPIError({
245 error,
246 model,
247 messageCount,
248 messageTokens,
249 durationMs,
250 durationMsIncludingRetries,
251 attempt,
252 requestId,
253 clientRequestId,
254 didFallBackToNonStreaming,
255 promptCategory,
256 headers,
257 queryTracking,
258 querySource,
259 llmSpan,
260 fastMode,
261 previousRequestId,
262}: {
263 error: unknown
264 model: string
265 messageCount: number
266 messageTokens?: number
267 durationMs: number
268 durationMsIncludingRetries: number
269 attempt: number
270 requestId?: string | null
271 /** Client-generated ID sent as x-client-request-id header (survives timeouts) */
272 clientRequestId?: string
273 didFallBackToNonStreaming?: boolean
274 promptCategory?: string
275 headers?: globalThis.Headers
276 queryTracking?: QueryChainTracking
277 querySource?: string
278 /** The span from startLLMRequestSpan - pass this to correctly match responses to requests */
279 llmSpan?: Span
280 fastMode?: boolean
281 previousRequestId?: string | null
282}): void {
283 const gateway = detectGateway({
284 headers:
285 error instanceof APIError && error.headers ? error.headers : headers,
286 baseUrl: getFirstPartyBaseUrlOverride(),
287 })
288
289 const errStr = getErrorMessage(error)
290 const status = error instanceof APIError ? String(error.status) : undefined
291 const errorType = classifyAPIError(error)
292
293 // Log detailed connection error info to debug logs (visible via --debug)
294 const connectionDetails = extractConnectionErrorDetails(error)
295 if (connectionDetails) {
296 const sslLabel = connectionDetails.isSSLError ? ' (SSL error)' : ''
297 logForDebugging(
298 `Connection error details: code=${connectionDetails.code}${sslLabel}, message=${connectionDetails.message}`,
299 { level: 'error' },
300 )
301 }

Callers 1

queryModelFunction · 0.85

Calls 15

detectGatewayFunction · 0.85
classifyAPIErrorFunction · 0.85
consumeInvokingRequestIdFunction · 0.85
getAPIProviderForStatsigFunction · 0.85
getInferenceEnvMetadataFunction · 0.85
logOTelEventFunction · 0.85
endLLMRequestSpanFunction · 0.85
getTeleportedSessionInfoFunction · 0.85
getErrorMessageFunction · 0.70

Tested by

no test coverage detected