@flavoai/fastfold
Version:
Flavo frontend package
81 lines • 2.46 kB
JavaScript
/**
* 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