47 lines
992 B
JavaScript
47 lines
992 B
JavaScript
'use strict';
|
|
|
|
class RuntimeLog {
|
|
constructor(limit = 200) {
|
|
this.limit = Math.max(10, Number(limit) || 200);
|
|
this.entries = [];
|
|
}
|
|
|
|
add(level, message, details) {
|
|
this.entries.unshift({
|
|
level: String(level || 'info'),
|
|
message: String(message || ''),
|
|
details: details === undefined ? null : details,
|
|
timestamp: new Date().toISOString(),
|
|
});
|
|
|
|
if (this.entries.length > this.limit) {
|
|
this.entries.length = this.limit;
|
|
}
|
|
}
|
|
|
|
list(limit = 50) {
|
|
return this.entries.slice(0, Math.max(1, Number(limit) || 50));
|
|
}
|
|
|
|
clear() {
|
|
const count = this.entries.length;
|
|
this.entries.length = 0;
|
|
return count;
|
|
}
|
|
|
|
summary(limit = 50) {
|
|
const items = this.list(limit);
|
|
if (!items.length) {
|
|
return 'No MCP runtime logs recorded yet.';
|
|
}
|
|
|
|
return items
|
|
.map((entry) => `[${entry.timestamp}] ${entry.level.toUpperCase()} ${entry.message}`)
|
|
.join('\n');
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
RuntimeLog,
|
|
};
|