0.85.0

Fixed

  • KG: инжекция в системный промпт работает независимо от vector-RAGbuildKGContext вызывается из BuildMessages параллельно с RAG-путями, даже при коротких сообщениях, отсутствии vector-RAG или embedder. Лимит KG-блока — 500 токенов (#116).
  • KG: закрыта cross-agent утечка — все KG-handler-методы читают agentID из URL path (chi.URLParam), а не из query-параметра. ID сущностей/связей тоже из path. Фронтенд обновлён (#117).
  • KG: реэкстракция при обновлении фактаReprocessFact снимает флаг kg_extracted и ставит факт в очередь при любом UpdateFact/UpdateFactWithL0 в Consolidator и Dream (#119).

Changed

  • KG: скоуп на уровне агента — все чтения KG (SearchEntitiesByName, ListRelationsByEntity, QueryGraph, FindSimilarEntities) используют userID = nil. KGWorker.ProcessFact пишет сущности с UserID = nil. Stats переписан через COUNT-запрос вместо O(N) прохода (#118).
  • KG: персистентная очередь экстракции — новая таблица kg_extraction_queue с retry/backoff (5s, 15s, 60s, 5m, 15m). Лимит параллелизма = 4. LLM-таймаут увеличен до 60 секунд. Backfill при миграции. Защита Rebuild от двойного запуска (409 Conflict) (#120).