0.111.0

Added

  • tool_call_history — промежуточные tool-вызовы (assistant + tool results) теперь сохраняются в БД с ролью tool_call_history. Раньше при загрузке контекста LLM агент «забывал» свои действия — видел только финальный ответ, но не intermediate tool calls и их результаты.
  • Инструмент tool_log — новый read-only инструмент для просмотра истории tool-вызовов. Агент может просмотреть свои недавние действия, отфильтровать по имени инструмента, увидеть аргументы и результаты.
  • Маршрутизация по agent_id — все WebSocket-сообщения для одного агента маршрутизируются в единый SessionActor (agent:{agentID}). Раньше каждый WS-чат создавал отдельный actor — параллельные сессии не видели контекст друг друга и могли конфликтовать (повторные email, потерянный контекст).
  • Fan-out streaming — streaming-события дублируются на agent-level chatID, чтобы все WS-подключения одного агента получали обновления.
  • Cancellation при новом сообщении — если агент занят обработкой и приходит новое user-сообщение, текущий ход отменяется (context cancellation), агент переключается на новое сообщение. Раньше новое сообщение стояло в очереди до завершения много минутного хода.

Changed

  • SessionKey для WS-сообщений теперь agent:{agentID} вместо websocket:{chatID}.
  • streamHook использует метод publish() с fan-out на agent-chatID.
  • AsyncAddMessage — новый метод Store для fire-and-forget записи (не блокирует agent loop).