autoagent-cli
Version:
Run autonomous AI agents using Claude or Gemini for task execution
82 lines (81 loc) • 2.98 kB
JavaScript
;
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}`;
}