May 20th, 2026

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.