Refactor: replace BackgroundScheduler with ReflectionScheduler, migrate to outbox-driven event processing, and remove skill mining logic
ci / JVM build + tests (push) Has been cancelled
ci / JVM build + tests (push) Has been cancelled
This commit is contained in:
@@ -106,4 +106,60 @@ sealed interface Event {
|
||||
@Serializable
|
||||
@SerialName("error")
|
||||
data class Error(override val date: Instant, val message: String, val code: String? = null) : Event
|
||||
|
||||
/**
|
||||
* Конвейер вызова тула упал (handler кинул Throwable, args не парсятся,
|
||||
* kernel прибил таск). Отличается от [ToolResult]: там мы сообщаем LLM
|
||||
* результат (даже если LLM его не понравился), тут — сигнал о
|
||||
* внутренней ошибке **самого исполнения тула**. Используется
|
||||
* background-подписчиками (например [ReflectionScheduler]-like
|
||||
* компонентами) для накопления паттернов отказов. Клиенту
|
||||
* показывается для transparency, но в UI особо не нужен.
|
||||
*/
|
||||
@Serializable
|
||||
@SerialName("tool_failed")
|
||||
data class ToolFailed(
|
||||
override val date: Instant,
|
||||
val toolCallId: String,
|
||||
val toolName: String?,
|
||||
val message: String,
|
||||
val durationMs: Long,
|
||||
) : Event
|
||||
|
||||
/**
|
||||
* Диалог переходит в закрытое состояние ([Conversation.close] /
|
||||
* [ConversationLoop.close] / `agent.deleteConversation`). Эмитится
|
||||
* **до** освобождения ресурсов, чтобы background-подписчики
|
||||
* (skill mining, reflection) успели сделать final pass. После
|
||||
* `Closed` диалог уже удалён из `agent.getConversations()` и
|
||||
* `getMessages()` отдаст только то, что осталось в журнале.
|
||||
*
|
||||
* Парный `Opening` намеренно отсутствует — симметрия не нужна,
|
||||
* так как открытие тривиально (id уже известен с момента
|
||||
* `Agent.createConversation` → [Event.ConversationCreated]
|
||||
* / [AgentEvent.Created] в outbox'е).
|
||||
*/
|
||||
@Serializable
|
||||
@SerialName("conversation_closing")
|
||||
data class ConversationClosing(
|
||||
override val date: Instant,
|
||||
val conversationId: String,
|
||||
) : Event
|
||||
|
||||
/**
|
||||
* Compactor сжал старые turn'ы — [turnsCompacted] из истории исчезли.
|
||||
* Эмитится **до** deletion для background-подписчиков (skill mining),
|
||||
* чтобы они успели сделать pass на исчезающем контенте.
|
||||
*
|
||||
* В отличие от [ToolFailed]/[ConversationClosing], это событие
|
||||
* семантически "много контента ушло" — subscribers могут решать,
|
||||
* стоит ли тратить tokens на mining ([turnsCompacted] > N).
|
||||
*/
|
||||
@Serializable
|
||||
@SerialName("compaction_triggered")
|
||||
data class CompactionTriggered(
|
||||
override val date: Instant,
|
||||
val conversationId: String,
|
||||
val turnsCompacted: Int,
|
||||
) : Event
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user