0.129.1
Fixed
- tool_call_history: записи не сохранялись в БД — роли
tool_call_historyиmemory_contextотсутствовали в CHECK-констрейнте таблицы messages. INSERT молча падал на PostgreSQL (и потенциально на свежем SQLite). Миграция 069 добавляет обе роли. Инструментtool_logвсегда возвращал «No tool call history found». - AddMessage: ошибки записи глотались — 10+ вызовов
_, _ = store.AddMessage(...)и_ = store.AsyncAddMessage(...)игнорировали ошибки БД. Заменено на логирование черезslog.Error. - email_send: тело письма терялось — после отправки письма его содержание не сохранялось нигде. Теперь письмо записывается в
workspace/output/sent/<timestamp>-<to>-<subject>.html, а в tool-результате указан путь к файлу. - chat_history: не возвращал tool-вызовы — инструмент искал
role:"tool"(которая есть только у ask_user), но не запрашивалtool_call_history. Добавлена рольtool_call_historyв запрос приinclude_tools: true. - tool_preview: некорректный тип
to— preview для email_send использовал type assertionstringдля поляto, которое являетсяarray. Обработаны оба типа. - FastTrimToolResults: обрезка по символам вместо токенов — переписана на токен-бюджет через
tokens.Count(). Старые tool-результаты обрезаются до 200 токенов, последние 4 защищены от усечения. - Асинхронный pruning tool-результатов — после каждого хода горутина помечает старые (>2 ходов, >10K токенов) tool-результаты в БД как compacted:
[Tool result compacted. Tool: exec, CallID: call_123]. LLM видит маркер и знает, что инструмент был вызван, даже если результат обрезан. - Truncation tool-результатов: полный вывод в файл — при обрезке результата (>50KB) полный текст сохраняется в
workspace/output/tool_results/<tool>_<callID>.txt. LLM получает превью + путь к файлу и может перечитать полный вывод черезread_file.
Changed
- exec: полная поддержка Windows — вместо хардкода
sh -cиспользуетсяcmd.exe /cна Windows. Описание инструмента динамически подстраивается под платформу: OS, shell, workspace, лимиты обрезки, platform-specific chaining инструкции (&&/&). - security: BuildMinimalEnv для Windows — PATH, SYSTEMROOT, USERPROFILE, TMP/TEMP передаются из системы; добавлены Windows-переменные в allowedEnvVars (SYSTEMROOT, COMSPEC, PATHEXT, WINDIR).