# Тестирование dsh-agent-tool-filter — отчёт - **Релиз:** текущий (см. [GitHub Releases](https://github.com/Kiol-V/dsh-agent-tool-filter/releases)) - **Дата:** 2026-10-26 - **Среда:** DSH 0.2.1-rc.2, Windows 11 (10.0.22000); тестовый профиль DSH и изолированный прогон `test_drive` ## 1. Инструментарий ### Автотесты (в составе репозитория, каталог `test/`) Канон прогона: `node --test test/` из каталога `repo/`. Каждый модуль также самодостаточен: `node test/.test.mjs`. | Модуль | Что проверяет | |---|---| | `config.test.mjs` | нормализация конфига: дефолты, матрица, профили, поля `language` и `debugLog`, отбраковка | | `restriction.test.mjs` | механика маскирования: `restrict()` поимённо, allow с фильтрацией неизвестных имён, снятие масок, счётчик скрытых | | `agent-filter.test.mjs` | применение фильтра: только корневые агенты, hot-update, промежуточные состояния (маска не теряется), отложенные повторы | | `compat-mode.test.mjs` | режимы auto/hide/block, детекция использования tools (включая текстовую), guard | | `serializer.test.mjs` | YAML-диалект insert-строк профиля, золотая форма, экранирование `!!js` | | `manage.test.mjs` | write-API: связки, профили, `removeToolName`, копии/удаление пресетов, пакеты, `setLanguage`, `setDebugLog` | | `diagnostics.test.mjs` | статус (включая `debugLogPath`), валидация имён, предупреждения ✅/⚠/❌ | | `scan.test.mjs` | сканирование палитры DSH, классификация tools (можно/нельзя отключить) | | `remote-api.test.mjs` | регистрация Typert Remote-вклада (регресс 404), контракт сервиса | | `remote-descriptors.test.mjs` | дескрипторы вызовов, строгие кодеки, опциональные параметры | | `i18n.test.mjs` | словари RU/EN (включая паритет 18 ключей панели апрува), резолв языка, валидация `language` | | `preset-display.test.mjs` | display-тексты пресетов: словарь DSH, опубликованные метаданные, фолбэки | | `client-render.test.mjs` | рендер UI-карточки: секции, модалки, предупреждения с кнопкой «Убрать имя», локализация (SSR-смоук) | | `debug-fallback.test.mjs` | файловая диагностика: env override `ATF_DEBUG_LOG`, дефолт `/logs/`, `resolveLogPath` | | `preset-reapply.test.mjs` | повторное применение маски при смене пресета | | `display-assets.test.mjs` | ресурсы отображения (иконка, локализации) | | `approval-bridge.test.mjs` | семантика моста апрува: однократное разрешение, отклонение, fail-closed, отмена, привязка аргументов к сессии | | `approval-store.test.mjs` | клиентский store запросов апрува | | `approval-panel-render.test.mjs` | рендер панели апрува: очередь, заглушки, фильтрация управляющих символов Unicode, ограничение текста, локализация RU/EN | ### Дополнительный инструментарий - `test/verify-yaml.mjs` — синтаксическая валидация профильного `cordis.patch.yml` парсером YAML из DSH. - `scripts/build.mjs` — сборка клиентского бандла; тарбол — `npm pack` → `dist/`. - `test_drive` — изолированный прогон плагина (install → dump-config → headless boot → uninstall). ## 2. Результаты (текущий релиз) - **Unit-тесты:** 19 модулей — 162 проверки + 7 модулей сводки, все зелёные. - **YAML-валидация** `cordis.patch.yml` (`verify-yaml.mjs`) — OK. - **`test_drive`** по релизному тарболу — PASS: install, patch, boot, uninstall подтверждены. - **Приёмка** (2026-10-26, релиз 1.1.1): автоматические тесты — 19 модулей зелёные (162 проверки + 7 модулей сводки); локализация панели апрува RU/EN — словарь языка UI, паритет словарей и обе стороны рендера покрыты тестами; кроссплатформенный вызов esbuild в тесте рендера и сборке. Механика апрува (1.1.0, приёмка 2026-10-26): одиночная эскалация с разрешением; отклонение (кнопкой и Esc); три параллельных запроса; поведение при остановке основного агента — панель до решения пользователя; выключенный тумблер — без эскалации. Аудит безопасности: критичных и высоких находок нет. ## 3. Проверка после установки 01. Перезапустите DSH и откройте **новую сессию**: сессии DSH сохраняют ревизию плагина, с которой стартовали. 02. В новом чате с пресетом из матрицы скрытые инструменты недоступны с первого хода (hide) либо их вызовы блокируются (guard на «грязной» истории). 03. Субагенты сохраняют полный набор tools. 04. Включите тумблер «Расширенные права субагентов» → субагент запрашивает расширенный доступ → в основном чате над блоком ввода появляется панель с раскрытием действия (пресет, сессия, задание, инструмент, аргументы, обоснование) и кнопками «Разрешить (один раз)» / «Отклонить» (кнопкой или Esc). Выключите тумблер → запросов нет. ## Примечания - После обновления DSH или плагина проверки выполняются только на новых сессиях после перезапуска. - Отчёт описывает тест-контур последнего релиза: установка и использование ранних версий не предполагается — поддерживается последняя версия пакета.