package com.correx.core.transitions.graph

import com.correx.core.artifacts.kind.TypedArtifactSlot
import com.correx.core.events.types.ArtifactId
import com.correx.core.inference.GenerationConfig
import com.correx.core.inference.ModelCapability

data class StageConfig(
    val requiredCapabilities: Set<ModelCapability> = emptySet(),
    val modelId: String? = null,
    val tokenBudget: Int = 4096,
    val generationConfig: GenerationConfig = GenerationConfig(
        temperature = 0.7,
        topP = 1.0,
        maxTokens = 2048,
    ),
    val allowedTools: Set<String> = emptySet(),
    val maxRetries: Int = 3,
    val produces: List<TypedArtifactSlot> = emptyList(),
    val needs: Set<ArtifactId> = emptySet(),
    val metadata: Map<String, String> = emptyMap(),
)
