package com.correx.core.context.compression

sealed interface CompressionStrategy {
    // Tool log entries: deduplicate identical content, drop oldest when over budget
    object ToolLog : CompressionStrategy
    // Conversation turns: retain the last `keepLast` entries verbatim, drop oldest first when over budget. Default: 10.
    data class Conversation(val keepLast: Int = 10) : CompressionStrategy
    // Artifact entries: keep most recent entry per sourceId
    object Artifact : CompressionStrategy
    // Steering notes: always retained verbatim, never dropped
    object SteeringNote : CompressionStrategy
    // Event history DecisionPoints: always retained, already compressed facts
    object EventHistory : CompressionStrategy
}
