autoagent-cli
Version:
Run autonomous AI agents using Claude or Gemini for task execution
72 lines (71 loc) • 2.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const chalk_1 = __importDefault(require("chalk"));
class Logger {
static setDebugEnabled(enabled) {
Logger.debugEnabled = enabled;
}
static setDefaultOptions(options) {
Logger.defaultOptions = { ...Logger.defaultOptions, ...options };
}
static formatMessage(message, options) {
const opts = { ...Logger.defaultOptions, ...options };
let formatted = message;
if (opts.prefix !== undefined && opts.prefix !== '') {
formatted = `[${opts.prefix}] ${formatted}`;
}
if (opts.timestamp === true) {
const timestamp = new Date().toISOString();
formatted = `[${timestamp}] ${formatted}`;
}
return formatted;
}
static info(message, options) {
console.log(chalk_1.default.blue(Logger.formatMessage(message, options)));
}
static success(message, options) {
console.log(chalk_1.default.green(`✓ ${Logger.formatMessage(message, options)}`));
}
static warning(message, options) {
console.log(chalk_1.default.yellow(`⚠ ${Logger.formatMessage(message, options)}`));
}
static error(message, options) {
const errorMessage = message instanceof Error ? message.message : message;
console.error(chalk_1.default.red(`Error: ${Logger.formatMessage(errorMessage, options)}`));
if (message instanceof Error && Logger.debugEnabled) {
console.error(chalk_1.default.gray(`Stack trace: ${message.stack ?? ''}`));
}
}
static debug(message, options) {
const debugOptions = { ...options, debugEnabled: options?.debugEnabled ?? Logger.debugEnabled };
if (debugOptions.debugEnabled === true || Logger.defaultOptions.debugEnabled === true) {
console.log(chalk_1.default.gray(`[DEBUG] ${Logger.formatMessage(message, options)}`));
}
}
static progress(message, current, total, options) {
const percentage = Math.round((current / total) * 100);
const progressBar = Logger.createProgressBar(percentage);
console.log(chalk_1.default.cyan(`${progressBar} ${percentage}% - ${Logger.formatMessage(message, options)}`));
}
static createProgressBar(percentage, width = 20) {
const filled = Math.round((percentage / 100) * width);
const empty = width - filled;
return `[${chalk_1.default.green('█'.repeat(filled))}${chalk_1.default.gray('░'.repeat(empty))}]`;
}
static clear() {
process.stdout.write('\x1Bc');
}
static newline() {
console.log();
}
}
exports.Logger = Logger;
Logger.debugEnabled = false;
Logger.defaultOptions = {
timestamp: false,
debugEnabled: false,
};