UNPKG

agp-cli

Version:

Agentic Programming Project CLI - Standardized knowledge layer for AI-assisted development

130 lines 3.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLogger = exports.Logger = exports.logger = void 0; const chalk_1 = __importDefault(require("chalk")); const ora_1 = __importDefault(require("ora")); class Logger { options; currentProgress = ''; isProgressActive = false; constructor(options = {}) { this.options = options; } /** * Print important messages that should always be visible */ info(message) { this.clearProgress(); console.log(chalk_1.default.blue(message)); } success(message) { this.clearProgress(); console.log(chalk_1.default.green(`✓ ${message}`)); } warning(message) { this.clearProgress(); console.log(chalk_1.default.yellow(`! ${message}`)); } error(message) { this.clearProgress(); console.log(chalk_1.default.red(`✗ ${message}`)); } /** * Show inline progress that gets replaced on next update */ progress(message) { if (this.options.silent) return; this.clearProgress(); this.currentProgress = `⠋ ${message}...`; process.stdout.write(chalk_1.default.gray(this.currentProgress)); this.isProgressActive = true; } /** * Complete current progress and show final result */ progressDone(message) { if (this.options.silent) return; this.clearProgress(); if (message) { console.log(chalk_1.default.gray(`✓ ${message}`)); } this.isProgressActive = false; } /** * Show verbose/debug information (only if verbose mode is enabled) */ debug(message) { if (!this.options.verbose || this.options.silent) return; this.clearProgress(); console.log(chalk_1.default.dim(message)); } /** * Show step information (slightly less prominent than info) */ step(message) { this.clearProgress(); console.log(chalk_1.default.cyan(`→ ${message}`)); } /** * Clear current progress line */ clearProgress() { if (this.isProgressActive && this.currentProgress) { // Calculate the actual display length (excluding emoji which might be 2 chars) const displayLength = this.currentProgress.length + 2; // +2 for emoji process.stdout.write('\r' + ' '.repeat(displayLength) + '\r'); this.isProgressActive = false; this.currentProgress = ''; } } /** * Start a multi-step operation */ startGroup(title) { this.clearProgress(); console.log(chalk_1.default.bold.blue(`\n${title}`)); } /** * End a multi-step operation */ endGroup(message) { this.clearProgress(); if (message) { console.log(chalk_1.default.bold.green(`${message}\n`)); } else { console.log(''); } } /** * Create a spinner-like effect for long operations */ async withSpinner(message, operation) { if (this.options.silent) { return await operation(); } const spinner = (0, ora_1.default)(message).start(); try { const result = await operation(); spinner.succeed(message); return result; } catch (error) { spinner.fail(message); throw error; } } } exports.Logger = Logger; // Export singleton instance exports.logger = new Logger(); // Export convenience functions const createLogger = (options) => new Logger(options); exports.createLogger = createLogger; //# sourceMappingURL=logger.js.map