* Override listModels method to apply model filtering with enhanced error handling
()
| 264 | * Override listModels method to apply model filtering with enhanced error handling |
| 265 | */ |
| 266 | async listModels(): Promise<string[]> { |
| 267 | try { |
| 268 | const allModels = await super.listModels(); |
| 269 | const filteredModels = this.filterChatModels( |
| 270 | allModels.map((id) => ({ id })), |
| 271 | ); |
| 272 | |
| 273 | // If filtered list is empty or very limited, return recommended models |
| 274 | if (filteredModels.length < 5) { |
| 275 | console.info( |
| 276 | "CometAPI: Limited models available, using recommended set", |
| 277 | ); |
| 278 | return this.getRecommendedModels(); |
| 279 | } |
| 280 | |
| 281 | return filteredModels.map((model) => model.id); |
| 282 | } catch (error: any) { |
| 283 | // Enhanced error handling with specific error types |
| 284 | const errorMessage = error?.message || "Unknown error"; |
| 285 | const statusCode = error?.status || error?.statusCode; |
| 286 | |
| 287 | if (statusCode === 401) { |
| 288 | throw new CometAPIAuthenticationError( |
| 289 | "CometAPI authentication failed. Please check your API key.", |
| 290 | ); |
| 291 | } else if (statusCode === 429) { |
| 292 | throw new CometAPIQuotaExceededError( |
| 293 | "CometAPI rate limit exceeded. Please try again later.", |
| 294 | ); |
| 295 | } else if (statusCode >= 400 && statusCode < 500) { |
| 296 | throw new CometAPIError( |
| 297 | `CometAPI client error: ${errorMessage}`, |
| 298 | "CLIENT_ERROR", |
| 299 | statusCode, |
| 300 | ); |
| 301 | } else if (statusCode >= 500) { |
| 302 | console.warn( |
| 303 | "CometAPI server error, falling back to recommended models:", |
| 304 | errorMessage, |
| 305 | ); |
| 306 | return this.getRecommendedModels(); |
| 307 | } else { |
| 308 | // Network or other errors - fallback gracefully |
| 309 | console.warn( |
| 310 | "CometAPI: Failed to fetch model list, using recommended models", |
| 311 | errorMessage, |
| 312 | ); |
| 313 | return this.getRecommendedModels(); |
| 314 | } |
| 315 | } |
| 316 | } |
| 317 | |
| 318 | /** |
| 319 | * Override chat completion with enhanced error handling |
nothing calls this directly
no test coverage detected