0.134.90
Added
web_fetchv2.0.0 — Markdown-конвертация и метаданные: инструмент полностью переписан наgithub.com/PuerkitoBio/goquery. Новый параметрformat(markdownпо умолчанию,text— старое поведение). Markdown-режим конвертирует<h1-6>→#,<a>→[text](url),<ul>/<ol>→-/1.,<pre>→```,<strong>/<em>→**/_,<blockquote>→>, таблицы → pipe-формат,<img>→. В начале результата добавляются метаданные страницы (Title:,Description:). В режимеtextв конце добавляется секцияLinks:(до 30 ссылок).- Charset-декодирование: автоматическое определение и декодирование кодировок (
windows-1251,iso-8859-*,gbkи др.) поContent-Typeheader и<meta charset>. Используетgolang.org/x/text/encoding/htmlindex. - Content-Type сниффинг: если сервер не отправляет
Content-Type: text/html, тип определяется поhttp.DetectContentTypeи<!DOCTYPE html>/<html>префиксу. Accept-Languageheader:en,ru;q=0.8— серверы отдают контент на предпочитаемом языке.
Changed
web_fetch.ExecuteStreamудалён: фейковый стриминг (одно сообщение «Fetching…» + один результат) заменён на чистыйExecute. Runner автоматически использует не-streaming путь через type assertiontool.(tools.StreamingTool).- Дублирование
Execute/ExecuteStreamустранено: единыйfetch()helper для всей HTTP-логики. - Обрезка после парсинга: тело читается целиком (до 2 МБ ceiling), парсится полный DOM, обрезается уже текст на
max_length. Раньше тело обрезалось посреди HTML → неполный DOM. max_lengthклампится в коде (clampInt(v, 1000, 100000)) в дополнение к schema-валидации.nil-guard: приssrfGuard == nilсоздаётся дефолтныйNewSSRFGuard(nil)(блокирует private IPs). Раньшеnilполностью отключал SSRF-защиту.- URL экранируется в атрибуте
<web_fetch url="…">черезhtml.EscapeString. - SSRF-проверка:
ValidateURL+SafeHTTPClient(DialContext с DNS-проверкой +CheckRedirectс ре-валидацией) — без изменений, работает корректно.
Fixed
- Описание инструмента: убрано ложное утверждение «http:// is auto-upgraded to https://» — auto-upgrade не реализован и не должен быть (ломает HTTP API, локальные серверы).