@dollhousemcp/mcp-server
Version:
DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.
82 lines • 3.26 kB
TypeScript
/**
* Central coordinator for the Unified Logging System.
*
* Accepts UnifiedLogEntry objects from all sources, enforces level filtering
* and entry size limits, routes entries to registered sinks, and manages
* flush lifecycle (timer + buffer threshold + immediate flush for security).
*
* See docs/LOGGING-DESIGN.md §4.2 for the full design.
*/
import { type UnifiedLogEntry, type ILogSink, type LogManagerConfig } from './types.js';
export declare class LogManager {
private readonly sinks;
private readonly buffer;
private readonly config;
private flushTimer;
private entryCounter;
private dropCount;
private previousBufferSize;
private immediateFlushWindowStart;
private immediateFlushCount;
constructor(config: LogManagerConfig);
/**
* Route a log entry to all registered sinks.
*
* - Skips entries below the minimum log level.
* - Enforces max entry size (truncates `data`, sets `_truncated`).
* - Security warn/error entries trigger an immediate (rate-limited) flush.
* - Other entries are buffered; a flush is triggered when the buffer is full.
*/
log(entry: UnifiedLogEntry): void;
/** Register an output sink. */
registerSink(sink: ILogSink): void;
/** Flush all registered sinks and report drops if any occurred. */
flush(): Promise<void>;
/** Graceful shutdown: clear timer, flush, then close all sinks. */
close(): Promise<void>;
/**
* Generate a unique log entry ID.
* Format: `LOG-{timestamp}-{counter}`
*/
generateId(): string;
private startFlushTimer;
private stopFlushTimer;
/**
* Sliding-window rate limiter for immediate flushes.
* Returns `true` if an immediate flush is allowed right now.
*/
private canImmediateFlush;
/**
* Enforce `maxEntrySize` by truncating the `data` field if necessary.
* Returns the original entry unmodified when under the limit, or a
* shallow copy with `data` replaced when truncation is needed.
*/
private enforceEntrySize;
/** Create a meta/system log entry from the LogManager itself. */
private createMetaEntry;
}
/**
* Map the flat env object (from Zod-parsed `process.env`) to a typed
* `LogManagerConfig`. Keeps the mapping in one place so the DI container
* only needs `buildLogManagerConfig(env)`.
*/
export declare function buildLogManagerConfig(envVars: {
DOLLHOUSE_LOG_DIR: string;
DOLLHOUSE_LOG_FORMAT: 'text' | 'jsonl';
DOLLHOUSE_LOG_RETENTION_DAYS: number;
DOLLHOUSE_LOG_SECURITY_RETENTION_DAYS: number;
DOLLHOUSE_LOG_FLUSH_INTERVAL_MS: number;
DOLLHOUSE_LOG_BUFFER_SIZE: number;
DOLLHOUSE_LOG_MEMORY_CAPACITY: number;
DOLLHOUSE_LOG_MEMORY_APP_CAPACITY: number;
DOLLHOUSE_LOG_MEMORY_SECURITY_CAPACITY: number;
DOLLHOUSE_LOG_MEMORY_PERF_CAPACITY: number;
DOLLHOUSE_LOG_MEMORY_TELEMETRY_CAPACITY: number;
DOLLHOUSE_LOG_MAX_ENTRY_SIZE: number;
DOLLHOUSE_LOG_IMMEDIATE_FLUSH_RATE: number;
DOLLHOUSE_LOG_FILE_MAX_SIZE: number;
DOLLHOUSE_LOG_MAX_DIR_SIZE_BYTES: number;
DOLLHOUSE_LOG_MAX_FILES_PER_CATEGORY: number;
LOG_LEVEL: 'debug' | 'info' | 'warn' | 'error';
}): LogManagerConfig;
//# sourceMappingURL=LogManager.d.ts.map