0.58.1

Fixed

  • pruneHistoryByTokens: атомарность tool-групп (#42): assistant с tool_calls + все его tool-результаты теперь единая единица обрезки — группа либо включена целиком, либо отброшена целиком. Устраняет 400 Bad Request после in-loop compact
  • ToolCalls не восстанавливался из БД (#43): при загрузке истории из БД поле tool_calls (JSON-строка) теперь парсится в []ToolCallData. Устраняет осиротевшие tool-сообщения, приводившие к protocol violation
  • removeOrphanedToolMessages (#44): новая функция в sanitize.go — удаляет tool-сообщения без родительского assistant с matching tool_call_id, а также очищает tool_calls у assistant, чьи результаты были удалены. Вызывается в SanitizeMessages как safety net