# Chat Agent 2.4.0 — результат

[MR !46](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/46>) влит.
Исходный main: `311178e46c33db1ff3061b8d5a21f1d9c88b2f7d`.
Итоговый main: `26195361362ca5d01da160d3d8c3ca8e2c414a16`.
Изменено 17 файлов: **+367 / −62 строки**. Пользовательская основная копия сохранена.

## Реализовано

- Панель 520 px, высота до 744 px, две темы и прежние голосовые/текстовые функции.
- Один «Ход выполнения» и одно окно: обзор, вход модели, выход модели, инструмент, время, связи и ID.
- Вход после подготовки контекста, ответ провайдера и обработанный ответ Agent показаны отдельно. Инструмент связан с фактическим generation_id через metadata ModelResponse и существующие события.
- Публичное пояснение модели использует response_text вместе с tool_calls. Отсутствующее пояснение обозначается явно. Дополнительной генерации нет; enable_thinking:false сохранён.
- Копирование текста, ID запроса и местное время получения/отправки доступны по наведению и фокусу. Время выполнения отдельно; для истории без отметки показано «Время не сохранено».
- Подробности только в памяти: 2 МиБ на запрос, 8 МиБ суммарно, 20 завершённых запросов с телами. Повторы, пропуски, неизвестные исходы и удаление старых тел обозначены явно.
- Исправлены сместившиеся ссылки Monitor на методы Agent; у отказа распознавания сохранено копирование ID и убран фиктивный статус выполнения модели.

## Проверки

[Pipeline 5716](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/pipelines/5716>): пять штатных checks успешны.

| Проверка | Результат |
|---|---|
| Frontend CI | 558 тестов, 67 файлов — passed |
| Python CI | 239 passed, 133 skipped, 10 subtests passed |
| Ruby, browser NATS, dialog integration | Штатные jobs success; интеграция использует изолированные NATS/PostgreSQL/HTTP-модель |
| Локальные адресные проверки | 218 frontend-тестов; затем 47 проверок затронутых исправлений; 22 Agent/debug теста и 2 subtests |
| Сборки | TypeScript, Front, extension ZIP — прошли |
| Chrome | Рабочие ChatUI/Interaction/CSS с синтетическими данными: обе темы, выбор генерации, раскрытие JSON, объяснение, Escape/возврат фокуса, копирование |
| Production HTTPS | Monitor загрузил список сессий после поставки; error/warn в браузерном журнале не обнаружены |

Макет и локальные компоненты не считаются проверкой активированной пользовательской панели. На RoboForm открытой панели не было; живой запрос через новую версию не выполнялся. Микрофон не включался.

## Образы и runtime

| Сервис | OCI revision | OCI version | Digest | Фактическое состояние |
|---|---|---|---|---|
| Agent | 26195361362ca5d01da160d3d8c3ca8e2c414a16 | 5.1.1131 | a20fdd82c8a6e68ea10fa70d3c905c738fed55d35beb37bf6402d11a22b64641 | 1/1 running, update completed |
| Front | 26195361362ca5d01da160d3d8c3ca8e2c414a16 | 5.1.1131 | 1f29a037bd399b879431d05c5bfe1daf0e92012d789a855f462328f4bc0f5be1 | 1/1 running, update completed |

Оба digest принадлежат `builder-registry.builder.giscloud.ru/gis/chat-agent/<agent|front>/main`.
У контейнеров нет отдельного Docker Healthcheck. Штатная поставка проверила точный image ID, replicas, завершение обновления и NATS readiness Core/Agent/LLM. HTTPS Front проверен отдельно.

Сборка/обновление Agent: jobs [28775](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28775>), [28794](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28794>).
Сборка Front: [28785](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28785>).

Первое обновление Front [28815](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28815>) дошло до тайм-аута: Swarm оставил update paused после `No such container` у первой задачи, хотя замена работала. Допуск восстановлен job [28801](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28801>). Штатный откат только Front на сохранённый digest выполнен job [28803](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28803>); повторная адресная поставка [28816](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28816>) успешна. Финально update completed и допуск открыт.

Восстановление выполнено через CI. Попытка кнопки Force update в Insight остановилась на зависшем в браузерном инструменте диалоге; подтверждённого изменения от неё нет. Инфраструктура и корневой CI не менялись.

## Пакет и оставшаяся активация

Версия **2.4.0** установлена в `локальный источник
ID, key, permissions и CSP сохранены. Резервная копия пути 2.3.2 указана в [installed-package.json](</experiments/voice-ai/archive/v/11/03/chat-agent-2.4.0/installed-package.json>).

CI job [28771](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/28771>) успешно собрала ZIP, но job завершилась ошибкой публикации: runner не разрешил `gitlab` через DNS `172.17.0.1:53`. Runner не перенастраивался. Установлен локально собранный пакет из точного итогового main SHA.

[ZIP 2.4.0](#archive-availability), SHA256: `b55e052bcab9254540ea7a64e96d5006ba4e0735d97ec8147c845e27bc5bdaa8`.

Пользователю остаётся перезагрузить Chat Agent в chrome://extensions, обновить нужную страницу и открыть панель. Автоматизация этой активации ранее запрещена браузерным инструментом; активированная новая панель пока не проверена.

## Снимки и доказательства

Ниже — рабочие компоненты с синтетическими данными, до активации установленного расширения:

![Компоненты панели в Chrome](</experiments/voice-ai/archive/v/11/03/chat-agent-2.4.0/components-light.png>)

[До поставки](</experiments/voice-ai/archive/v/11/03/chat-agent-2.4.0/runtime-before.json>) · [После поставки](</experiments/voice-ai/archive/v/11/03/chat-agent-2.4.0/runtime-after.json>) · [CI](</experiments/voice-ai/archive/v/11/03/chat-agent-2.4.0/ci-summary.json>) · [Исходники и проверки](</experiments/voice-ai/archive/v/11/03/chat-agent-2.4.0/source-and-local-checks.json>).
