UNPKG

autoagent-cli

Version:

Run autonomous AI agents using Claude or Gemini for task execution

82 lines (81 loc) 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProviderErrorFactory = void 0; exports.isUsageLimitError = isUsageLimitError; exports.isRateLimitError = isRateLimitError; exports.isExecutionError = isExecutionError; exports.isAvailabilityError = isAvailabilityError; exports.isProviderError = isProviderError; exports.getTimeRemaining = getTimeRemaining; exports.formatProviderError = formatProviderError; class ProviderErrorFactory { static createUsageLimitError(provider, message, resetTime, quotaType) { return { type: 'usage_limit', provider, message, timestamp: Date.now(), resetTime, quotaType }; } static createRateLimitError(provider, message, retryAfter, rateLimitType) { return { type: 'rate_limit', provider, message, timestamp: Date.now(), retryAfter, rateLimitType }; } static createExecutionError(provider, message, exitCode, stderr) { return { type: 'execution_error', provider, message, timestamp: Date.now(), exitCode, stderr }; } static createAvailabilityError(provider, message, reason) { return { type: 'availability_error', provider, message, timestamp: Date.now(), reason }; } } exports.ProviderErrorFactory = ProviderErrorFactory; function isUsageLimitError(error) { return typeof error === 'object' && error !== null && 'type' in error && error.type === 'usage_limit'; } function isRateLimitError(error) { return typeof error === 'object' && error !== null && 'type' in error && error.type === 'rate_limit'; } function isExecutionError(error) { return typeof error === 'object' && error !== null && 'type' in error && error.type === 'execution_error'; } function isAvailabilityError(error) { return typeof error === 'object' && error !== null && 'type' in error && error.type === 'availability_error'; } function isProviderError(error) { return isUsageLimitError(error) || isRateLimitError(error) || isExecutionError(error) || isAvailabilityError(error); } function getTimeRemaining(error) { if (isUsageLimitError(error) && error.resetTime !== undefined && error.resetTime > 0) { return Math.max(0, error.resetTime * 1000 - Date.now()); } if (isRateLimitError(error) && error.retryAfter !== undefined && error.retryAfter > 0) { return error.retryAfter * 1000; } return undefined; } function formatProviderError(error) { const timeRemaining = getTimeRemaining(error); const timeStr = timeRemaining !== undefined && timeRemaining > 0 ? ` (retry in ${Math.ceil(timeRemaining / 1000)}s)` : ''; return `${error.provider} ${error.type.replace('_', ' ')}: ${error.message}${timeStr}`; }