UNPKG

@flavoai/fastfold

Version:

Flavo frontend package

81 lines 2.46 kB
/** * AI Logger for FastFold * Provides structured logging for AI operations */ class AILogger { level; levels = { error: 0, warn: 1, info: 2, debug: 3, }; constructor(level = 'info') { this.level = level; } shouldLog(level) { return this.levels[level] <= this.levels[this.level]; } formatMessage(level, message, context) { const timestamp = new Date().toISOString(); const contextStr = context ? ` | Context: ${JSON.stringify(context)}` : ''; return `[${timestamp}] [AI:${level.toUpperCase()}] ${message}${contextStr}`; } error(message, context) { if (this.shouldLog('error')) { console.error(this.formatMessage('error', message, context)); } } warn(message, context) { if (this.shouldLog('warn')) { console.warn(this.formatMessage('warn', message, context)); } } info(message, context) { if (this.shouldLog('info')) { console.log(this.formatMessage('info', message, context)); } } debug(message, context) { if (this.shouldLog('debug')) { console.debug(this.formatMessage('debug', message, context)); } } /** * Log an error with full stack trace and context */ logError(error, context) { this.error(`${error.message}`, { ...context, errorName: error.name, stack: error.stack, }); } /** * Log AI endpoint request */ logRequest(endpoint, provider, model) { this.debug(`AI request to ${endpoint}`, { endpoint, provider, model }); } /** * Log AI endpoint response (success) */ logResponse(endpoint, provider, executionTime) { this.debug(`AI response from ${endpoint} (${executionTime}ms)`, { endpoint, provider, executionTime }); } /** * Log AI hook execution */ logHook(hookType, tableName, success, error) { if (success) { this.debug(`AI hook ${hookType} completed for ${tableName}`, { hookType, tableName }); } else { this.error(`AI hook ${hookType} failed for ${tableName}: ${error}`, { hookType, tableName, error }); } } } // Export singleton instance export const aiLogger = new AILogger(process.env.AI_LOG_LEVEL || 'info'); export default aiLogger; //# sourceMappingURL=aiLogger.js.map