@just-every/ensemble
Version:
LLM provider abstraction layer with unified streaming interface
65 lines • 1.99 kB
TypeScript
import { ResponseInput, ResponseInputItem } from '../types/types.js';
export interface MessageHistoryOptions {
maxMessages?: number;
maxTokens?: number;
preserveSystemMessages?: boolean;
compactToolCalls?: boolean;
compactionThreshold?: number;
}
export type PinnableMessage = ResponseInputItem & {
pinned?: boolean;
};
export interface ExtractedInfo {
entities: Set<string>;
decisions: string[];
todos: string[];
tools: Array<{
name: string;
purpose: string;
}>;
}
export interface MicroLogEntry {
timestamp?: number;
role: string;
summary: string;
}
export declare class MessageHistory {
private messages;
private options;
private estimatedTokens;
private microLog;
private extractedInfo;
constructor(initialMessages?: ResponseInput, options?: MessageHistoryOptions);
add(message: ResponseInputItem | PinnableMessage): Promise<void>;
getMessages(model?: string): Promise<ResponseInput>;
pinMessage(index: number): void;
getMicroLog(): MicroLogEntry[];
getExtractedInfo(): ExtractedInfo;
private addToMicroLog;
private createMicroLogSummary;
private extractInformation;
private extractEntities;
private extractDecisions;
private extractTodos;
private inferToolPurpose;
private getMessageContent;
count(): number;
clear(): void;
private trim;
private compactToolCalls;
getSummary(): string;
findLast(predicate: (msg: any) => boolean): any | undefined;
lastAssistantHadToolCalls(): boolean;
private estimateMessageTokens;
private updateTokenEstimate;
private checkAndCompact;
private performCompaction;
private compactHistoryHybrid;
private createHybridSummary;
private createMicroLogSection;
private createStructuredInfoSection;
private createDetailedSummary;
private estimateTextTokens;
ensureToolResultSequence(): void;
}
//# sourceMappingURL=message_history.d.ts.map