qnce-engine
Version:
Core QNCE (Quantum Narrative Convergence Engine) - Framework agnostic narrative engine with performance optimization
123 lines • 4.3 kB
TypeScript
export interface PerfEvent {
id: string;
type: 'flow-start' | 'flow-complete' | 'cache-hit' | 'cache-miss' | 'hot-reload-start' | 'hot-reload-end' | 'state-transition' | 'custom';
timestamp: number;
duration?: number;
metadata: Record<string, unknown>;
category: 'engine' | 'cache' | 'hot-reload' | 'user' | 'system';
}
export interface PerfSummary {
totalEvents: number;
eventsByType: Record<string, number>;
avgDurations: Record<string, number>;
maxDurations: Record<string, number>;
minDurations: Record<string, number>;
cacheHitRate: number;
hotReloadPerformance: {
avgTime: number;
maxTime: number;
totalReloads: number;
};
timeRange: {
start: number;
end: number;
duration: number;
};
}
export interface PerfReporterConfig {
batchSize: number;
flushInterval: number;
enableBackgroundFlush: boolean;
maxEventHistory: number;
enableConsoleOutput: boolean;
}
/**
* PerfReporter - Batched performance event collection and analysis
* Designed to work off main thread for minimal performance impact
*/
export declare class PerfReporter {
private events;
private config;
private flushTimer;
private startTime;
private activeSpans;
constructor(config?: Partial<PerfReporterConfig>);
/**
* Record a performance event
*/
record(type: PerfEvent['type'], metadata?: Record<string, unknown>, category?: PerfEvent['category']): string;
/**
* Start a performance span (for measuring duration)
*/
startSpan(type: PerfEvent['type'], metadata?: Record<string, unknown>, category?: PerfEvent['category']): string;
/**
* End a performance span and record the complete event
*/
endSpan(spanId: string, additionalMetadata?: Record<string, unknown>): void;
/**
* Record flow start event (S2-T4 requirement)
*/
recordFlowStart(nodeId: string, metadata?: Record<string, unknown>): string;
/**
* Record flow completion event (S2-T4 requirement)
*/
recordFlowComplete(spanId: string, nextNodeId: string, metadata?: Record<string, unknown>): void;
/**
* Record cache hit event (S2-T4 requirement)
*/
recordCacheHit(cacheKey: string, metadata?: Record<string, unknown>): string;
/**
* Record cache miss event (S2-T4 requirement)
*/
recordCacheMiss(cacheKey: string, metadata?: Record<string, unknown>): string;
/**
* Record hot-reload start event (S2-T4 requirement)
*/
recordHotReloadStart(deltaSize: number, metadata?: Record<string, unknown>): string;
/**
* Record hot-reload completion event (S2-T4 requirement)
*/
recordHotReloadEnd(spanId: string, success: boolean, metadata?: Record<string, unknown>): void;
/**
* Generate performance summary for CLI dashboard
*/
summary(): PerfSummary;
/**
* Get raw events for detailed analysis
*/
getEvents(): PerfEvent[];
/**
* Clear event history
*/
clear(): void;
/**
* Flush events to background processing
*/
flush(): void;
/**
* Start automatic flush timer
*/
private startFlushTimer;
/**
* Stop automatic flush timer
*/
stopFlushTimer(): void;
/**
* Generate unique event ID
*/
private generateEventId;
}
export declare function getPerfReporter(config?: Partial<PerfReporterConfig>): PerfReporter;
export declare function shutdownPerfReporter(): void;
export declare const perf: {
flowStart: (nodeId: string, metadata?: Record<string, unknown>) => string;
flowComplete: (spanId: string, nextNodeId: string, metadata?: Record<string, unknown>) => void;
cacheHit: (cacheKey: string, metadata?: Record<string, unknown>) => string;
cacheMiss: (cacheKey: string, metadata?: Record<string, unknown>) => string;
hotReloadStart: (deltaSize: number, metadata?: Record<string, unknown>) => string;
hotReloadEnd: (spanId: string, success: boolean, metadata?: Record<string, unknown>) => void;
record: (type: PerfEvent["type"], metadata?: Record<string, unknown>, category?: PerfEvent["category"]) => string;
summary: () => PerfSummary;
clear: () => void;
};
//# sourceMappingURL=PerfReporter.d.ts.map