package com.correx.infrastructure.tools.task

import com.correx.core.events.types.SessionId
import com.correx.core.events.types.TaskId

/**
 * Port: record that a session is working a task — emitted on claim (and on an affected_paths edit by
 * the claimant) so the gates can fold it into SessionContext.activeTask without scanning task
 * streams. The host supplies an adapter that appends a SessionWorkingTaskEvent to the session
 * stream. A null binding means no recording (the bare tool still works).
 */
fun interface SessionFactRecorder {
    suspend fun recordWorkingTask(sessionId: SessionId, taskId: TaskId, affectedPaths: List<String>)
}
