package com.correx.core.events.events

import com.correx.core.events.types.SessionId
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
@SerialName("ChatSessionStarted")
data class ChatSessionStartedEvent(
    val sessionId: SessionId,
) : EventPayload

@Serializable
@SerialName("SessionWorkspaceBound")
data class SessionWorkspaceBoundEvent(
    val sessionId: SessionId,
    val workspaceRoot: String,
    val allowedPaths: List<String>,
) : EventPayload

@Serializable
@SerialName("OperatorProfileBound")
data class OperatorProfileBoundEvent(
    val sessionId: SessionId,
    val about: String,
    val approvalMode: String,
    val preferredModels: List<String>,
    val conventions: List<String>,
) : EventPayload

@Serializable
@SerialName("ProjectProfileBound")
data class ProjectProfileBoundEvent(
    val sessionId: SessionId,
    val workspaceRoot: String,
    val about: String,
    val conventions: List<String>,
    val commands: Map<String, String>,
) : EventPayload
