package com.correx.core.inference

import kotlinx.serialization.Serializable

/**
 * All fields required for deterministic replay.
 * Callers must fully specify config — no implicit defaults at runtime.
 */
@Serializable
data class GenerationConfig(
    val temperature: Double,
    val topP: Double,
    val maxTokens: Int,
    val stopSequences: List<String> = emptyList(),
    val seed: Long? = null,          // null = non-deterministic; set for replay
    // Sampling knobs. null = omit from the request so the provider/model keeps its own default,
    // preserving prior behavior. Serialized only when set (top_k / min_p / repeat_penalty).
    val topK: Int? = null,
    val minP: Double? = null,
    val repeatPenalty: Double? = null,
)
