package com.correx.core.tools.state

import com.correx.core.approvals.Tier
import com.correx.core.events.events.ToolReceipt
import com.correx.core.events.events.ToolRequest
import com.correx.core.events.types.ToolInvocationId
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable

@Serializable
data class ToolInvocationRecord(
    val invocationId: ToolInvocationId,
    val toolName: String,
    val tier: Tier,
    val request: ToolRequest,
    val status: ToolInvocationStatus,
    val receipt: ToolReceipt? = null,
    val requestedAt: Instant,
    val completedAt: Instant? = null,
    val assessment: ToolCallAssessmentRecord? = null,
    val mutations: List<FileMutationRecord> = emptyList(),
)
