UNPKG

gaunt-sloth-assistant

Version:

[![Tests and Lint](https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/actions/workflows/unit-tests.yml) [![Integration Tests](https://github.co

114 lines 3.51 kB
import * as su from '#src/systemUtils.js'; import { closeLogStream, initLogStream, stream, writeToLogStream } from '#src/systemUtils.js'; const loggingState = { sessionLogFile: undefined, enableSessionLogging: false, }; // ANSI color codes const ANSI_COLORS = { red: '\x1b[31m', yellow: '\x1b[33m', green: '\x1b[32m', magenta: '\x1b[35m', dim: '\x1b[2m', reset: '\x1b[0m', }; // Helper functions for ANSI coloring function colorText(text, color) { if (!su.getUseColour()) { return text; } return `${ANSI_COLORS[color]}${text}${ANSI_COLORS.reset}`; } // Stream-based logging function const writeToSessionLog = (message) => { if (loggingState.enableSessionLogging) { // Strip ANSI color codes before logging to file const cleanMessage = message.replace(/\x1b\[[0-9;]*m/g, ''); writeToLogStream(cleanMessage); } }; // Public functions for session logging management export const initSessionLogging = (logFileName, enableLogging) => { loggingState.sessionLogFile = enableLogging ? logFileName : undefined; loggingState.enableSessionLogging = enableLogging; if (enableLogging && logFileName) { initLogStream(logFileName); } }; export const flushSessionLog = () => { // Streams auto-flush, so this is now a no-op for API compatibility // Could potentially force flush if needed in the future }; export const stopSessionLogging = () => { closeLogStream(); loggingState.sessionLogFile = undefined; loggingState.enableSessionLogging = false; }; export function displayError(message) { const coloredMessage = colorText(message, 'red'); writeToSessionLog(message + '\n'); su.log(coloredMessage); } export function displayWarning(message) { const coloredMessage = colorText(message, 'yellow'); writeToSessionLog(message + '\n'); su.warn(coloredMessage); } export function displaySuccess(message) { const coloredMessage = colorText(message, 'green'); writeToSessionLog(message + '\n'); su.log(coloredMessage); } export function displayInfo(message) { const coloredMessage = colorText(message, 'dim'); writeToSessionLog(message + '\n'); su.info(coloredMessage); } export function display(message) { writeToSessionLog(message + '\n'); su.log(message); } export function formatInputPrompt(message) { return colorText(message, 'magenta'); } export function displayDebug(message) { // TODO make it controlled by config if (message instanceof Error) { const stackTrace = message.stack || ''; writeToSessionLog(stackTrace + '\n'); su.debug(stackTrace); } else if (message !== undefined) { writeToSessionLog(message + '\n'); su.debug(message); } } // Create status update callback export const defaultStatusCallback = (level, message) => { switch (level) { case 'info': displayInfo(message); break; case 'warning': displayWarning(message); break; case 'error': displayError(message); break; case 'success': displaySuccess(message); break; case 'debug': displayDebug(message); break; case 'display': display(message); break; case 'stream': writeToSessionLog(message); stream(message); break; } }; //# sourceMappingURL=consoleUtils.js.map