MCPcopy
hub / github.com/di-sukharev/opencommit / normalizeEngineError

Function normalizeEngineError

src/utils/engineErrorHandler.ts:126–208  ·  view source on GitHub ↗
(
  error: unknown,
  provider: string,
  model: string
)

Source from the content-addressed store, hash-verified

124 * @returns A typed Error instance
125 */
126export function normalizeEngineError(
127 error: unknown,
128 provider: string,
129 model: string
130): Error {
131 // If it's already one of our custom errors, return as-is
132 if (
133 error instanceof ModelNotFoundError ||
134 error instanceof AuthenticationError ||
135 error instanceof InsufficientCreditsError ||
136 error instanceof RateLimitError ||
137 error instanceof ServiceUnavailableError
138 ) {
139 return error;
140 }
141
142 const statusCode = getStatusCode(error);
143 const message = extractErrorMessage(error);
144
145 // Handle based on HTTP status codes
146 switch (statusCode) {
147 case 401:
148 return new AuthenticationError(provider, message);
149
150 case 402:
151 return new InsufficientCreditsError(provider, message);
152
153 case 404:
154 // Could be model not found or endpoint not found
155 if (isModelNotFoundMessage(message)) {
156 return new ModelNotFoundError(model, provider, 404);
157 }
158 // Return generic error for other 404s
159 return error instanceof Error ? error : new Error(message);
160
161 case 429:
162 const retryAfter = getRetryAfter(error);
163 return new RateLimitError(provider, retryAfter, message);
164
165 case 500:
166 case 502:
167 case 503:
168 case 504:
169 return new ServiceUnavailableError(provider, statusCode, message);
170 }
171
172 // Handle based on error message content
173 if (statusCode === 400) {
174 return error instanceof Error ? error : new Error(message);
175 }
176
177 if (isModelNotFoundMessage(message)) {
178 return new ModelNotFoundError(model, provider, 404);
179 }
180
181 if (isInsufficientCreditsMessage(message)) {
182 return new InsufficientCreditsError(provider, message);
183 }

Callers 13

generateCommitMessageMethod · 0.90
OpenAiEngineClass · 0.90
MistralAiEngineClass · 0.90
OpenRouterEngineClass · 0.90
AimlApiEngineClass · 0.90
generateCommitMessageMethod · 0.90
DeepseekEngineClass · 0.90
generateCommitMessageMethod · 0.90
AnthropicEngineClass · 0.90
generateCommitMessageMethod · 0.90
generateCommitMessageMethod · 0.90

Calls 7

toLowerCaseMethod · 0.80
includesMethod · 0.80
getStatusCodeFunction · 0.70
extractErrorMessageFunction · 0.70
isModelNotFoundMessageFunction · 0.70
getRetryAfterFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…