Artifact Viewers: 6 адаптеров и singleton registry
Что изменилось
Integration PR #360 объединил шесть независимо разработанных artifact-viewer адаптеров в единый singleton registry — теперь каждый формат файла, который создаёт ассистент, отображается встроенным просмотрщиком без скачивания.
- Singleton registry
@rox-one/artifact-viewer-core: адаптеры регистрируют себя при первом импорте, lazy-загружаются по требованию. Один экземпляр на весь жизненный цикл приложения — нет дублирования инстансов между сессиями. - Markdown viewer: CommonMark + GitHub Flavored Markdown, syntax highlighting через shiki (распределённый, не bundled), поддержка mermaid-диаграмм.
- DOCX viewer: mammoth.js рендерит Word-документы в HTML на клиенте — без серверной части, без загрузки файла куда-то. Стили (жирный, курсив, таблицы, заголовки) сохраняются.
- XLSX viewer: SheetJS с виртуализацией строк для больших таблиц, freeze-panes, форматирование ячеек (числа, даты, проценты).
- PPTX viewer: слайды с thumbnail strip, клавиатурная навигация, full-screen режим, анимации через CSS transitions.
- Figma embed: live iframe с автоматическим token-auth через Electron webContents, prototype и inspect режимы.
- Browser sandbox: изолированный
sandbox-iframe для интерактивных HTML-артефактов с CSP; скрипты выполняются, но не имеют доступа к родительскому DOM.
Где попробовать
Напишите ассистенту: «Создай Excel-таблицу с бюджетом» или «Сделай Markdown-документ с планом проекта». Файл откроется прямо в чате. Для Figma — вставьте ссылку.
Архитектурное решение: singleton выбран для предотвращения дублирования тяжёлых парсеров (SheetJS, mammoth.js) в памяти при нескольких открытых артефактах одновременно. Каждый адаптер регистрируется один раз через side-effect при первом импорте. Детектирование формата — цепочка detect() вызовов; первый вернувший true побеждает.
Связанное
Дорожная карта: Артефакты и Просмотрщики. Следующие адаптеры: JSON viewer, D3 data-viz, video/audio.