Skip to content

fix(telegram): безопасно разбивать длинные HTML-ответы - #731

Merged
konard merged 4 commits into
mainfrom
issue-708-caafed0dc053
Jul 14, 2026
Merged

fix(telegram): безопасно разбивать длинные HTML-ответы#731
konard merged 4 commits into
mainfrom
issue-708-caafed0dc053

Conversation

@konard

@konard konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Что исправлено

  • добавлен HTML-aware splitter для сообщений Telegram: он не разрезает теги, HTML-сущности и surrogate pairs;
  • открытые форматирующие теги закрываются в конце каждого куска и переоткрываются в следующем с сохранением атрибутов;
  • обычные длинные ответы теперь отправляются валидными HTML-кусками не длиннее 4096 символов;
  • гостевой ответ обрезается по границе первого валидного HTML-куска вместо слепого .slice();
  • удалён служебный .gitkeep.

Воспроизведение

До исправления длинный ответ вида **word word ...** превращался в один <b>...</b>, после чего разрезался внутри тега. Первый кусок оставался без </b>, второй начинался с лишнего закрывающего тега, и Telegram мог вернуть can't parse entities.

Проверка

Добавлены регрессионные тесты для:

  • форматирования, пересекающего границу 4096 символов;
  • вложенных тегов и ссылок с атрибутами;
  • HTML-сущностей и emoji;
  • обычного sendMessage и гостевого answerGuestQuery.

Локально выполнены:

  • npm run build:sdk
  • npm run typecheck
  • npm run lint
  • npm run format:check
  • npm test -- --run src/telegram/__tests__/html-splitter.test.ts src/telegram/__tests__/bot-bridge-html-split.test.ts — 8 тестов
  • npm test — 3811 тестов прошли; один несвязанный тест ManagedAgentService один раз достиг существующего лимита 10 с под общей нагрузкой и успешно прошёл при отдельном повторе (8,9 с)
  • npm run build:backend
  • npm run build:web

Версия не менялась: release-please формирует patch-релиз из fix:-коммита согласно CONTRIBUTING.md.

Fixes #708

Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: #708
@konard konard self-assigned this Jul 14, 2026
@konard konard changed the title [WIP] [AUDIT/V7] Bot bridge splits/truncates already-rendered HTML on whitespace boundaries, producing unbalanced tags that Telegram rejects fix(telegram): безопасно разбивать длинные HTML-ответы Jul 14, 2026
@konard
konard marked this pull request as ready for review July 14, 2026 07:37
@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

Working session summary

Задача #708 решена: PR #731 готов к ревью.

  • Добавлен HTML-aware splitter: сохраняет баланс тегов, сущности, атрибуты ссылок и emoji.
  • Исправлены обычные длинные сообщения и guest-query ответы.
  • Добавлено 8 регрессионных тестов.
  • Все обязательные CI-проверки прошли, включая Test, TypeScript, Lint, Runtime Build, CodeQL и security audit.
  • PR имеет состояние CLEAN, ветка синхронизирована и рабочее дерево чистое.
  • PR переведён из draft в ready for review.

This summary was automatically extracted from the AI working session output.

@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Model: GPT-5.6 Sol
  • Provider: OpenAI
  • Public pricing estimate: $7.972882

📊 Context and tokens usage:

  • 160.3K / 200K (80%) input tokens, 14.8K / 128K (12%) output tokens

Total: (160.3K + 5.7M cached) input tokens, 14.8K output tokens, $7.972882 cost

🤖 Models used:

  • Tool: OpenAI Codex
  • Requested: gpt-5.6-sol
  • Thinking level: off (disabled)
  • Model: GPT 5.6 Sol (gpt-5.6-sol)

📎 Log file uploaded as Gist (2110KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard
konard merged commit 4f2d706 into main Jul 14, 2026
28 checks passed
@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

🎉 Auto-merged

This pull request has been automatically merged by hive-mind.

  • All CI checks have passed

Auto-merged by hive-mind with --auto-merge flag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[AUDIT/V7] Bot bridge splits/truncates already-rendered HTML on whitespace boundaries, producing unbalanced tags that Telegram rejects

1 participant