/**
 * ============================================================
 * Short-Term Memory (단기 기억)
 * 
 * 현재 대화의 즉시 맥락을 관리합니다.
 * FIFO 방식으로 최근 N개 메시지를 유지합니다.
 * ============================================================
 */

import { ShortTermMessage, MemoryContextResult } from './types';

export class ShortTermMemory {
    /**
     * 가시적(사용자/어시스턴트) 메시지에서 Short-Term 맥락을 구성합니다.
     */
    buildContext(
        visibleHistory: Array<{ role: string; content: string }>,
        limit: number,
        summarize: (text: string, maxLen: number) => string
    ): MemoryContextResult | null {
        if (limit <= 0 || visibleHistory.length === 0) return null;

        const recent = visibleHistory
            .slice(-limit)
            .map((msg) => `- ${msg.role}: ${summarize(msg.content, 260)}`)
            .join('\n');

        if (!recent) return null;

        return {
            layer: 'short-term',
            label: 'Short-Term Memory (현재 대화 흐름)',
            content: recent,
            relevance: 1.0
        };
    }
}
