// PLUGIN DEV

Документация по разработке плагинов

Умеете HTML? Умеете создавать плагины.

Быстрый старт

Плагин — это по сути веб-страница (HTML / CSS / JS). Напишите страницу и упакуйте её упаковщиком плагинов внутри CosmosBox в файл .cbplugin — отправьте любому, и он установится и заработает.

Более быстрый путь: генерация ИИ в один клик — опишите потребность в ИИ-чате ("сделай цифровую деревянную рыбу"), и ИИ создаст устанавливаемый плагин.

Структура каталогов

Плагин может быть одним файлом или каталогом из нескольких файлов (.cbplugin — по сути zip-пакет):

my-plugin/ — структура пакета плагина
my-plugin/
├── manifest.json // манифест плагина (обязательно)
├── index.html // входная страница (entry указывает на неё)
├── style.css // опциональные ресурсы
└── app.js // опциональные скрипты

Поля manifest.json

manifest.json — полный пример
{
"pluginId": "a3f8c1d2-9b4e-4f6a-8c5d-1e2f3a4b5c6d", // уникальный ID UUID v4 (генерируется упаковщиком)
"id": "mobi.reader", // старый короткий ID (совместимость)
"name": "MOBI Reader",
"version": "1.2.0",
"author": "YuzhouHe",
"description": "Читает электронные книги MOBI / AZW3",
"icon": "📖", // Эмодзи / URL изображения / Base64
"entry": "index.html",
"permissions": ["file.read", "storage"],
"fileTypes": ["mobi", "azw3"] // файловая маршрутизация: автоматическое открытие по типу
}
ПолеОбязательноОписание
pluginIdУникальный ID UUID v4, защита от коллизий на уровне системы; рекомендуется автогенерация упаковщиком
idСтарый короткий ID (например, mobi.reader); для новых плагинов опускайте — только совместимость
nameОтображаемое имя плагина
versionСемантическая версия, например 1.2.0
authorИмя автора
descriptionОписание в одну строку для маркета плагинов
iconЭмодзи, URL изображения или изображение Base64
entryОтносительный путь входного файла (обычно index.html)
permissionsДекларация разрешений (например, file.read / storage), выдаются по одному в центре разрешений
fileTypesДекларируемые расширения файлов для файловой маршрутизации (автооткрытие извне)

Процесс упаковки

  1. Выберите тип плагина: один файл / каталог из нескольких файлов
  2. Введите код: вставьте HTML или выберите папку
  3. Настройте manifest.json: имя / версия / вход / разрешения / типы файлов
  4. Выберите шифрование: публичные плагины → .cbplugin; платные/приватные → .encplugin (шифрование AES + двойное подтверждение пароля)
  5. Сгенерируйте пакет: в один клик, готов к отправке / импорту и установке
🛠️
Пакетная упаковка: среда разработки предоставляет скрипт pack_plugins.ps1 — запустите его после правок, чтобы пересобрать все .cbplugin (автоматически пропускает .git / node_modules / build).

Зашифрованные плагины .encplugin

.cbplugin.encplugin
НазначениеПубличная раздачаПлатная / приватная раздача
СодержимоеОткрытый zipШифрование AES
ИмпортУстановка напрямуюВвод пароля (автодиалог при внешнем открытии)

⚠️ Пароли зашифрованных плагинов невосстановимы — потеря пароля означает, что плагин никогда не удастся расшифровать. Храните их бережно.

Песочница и разрешения

Плагины работают в изолированном WebView — открытость и безопасность одновременно:

МеханизмОписание
Внедрение заголовков CSPMeta-тег + HTTP-заголовок, двойной путь; ограничивает загрузку внешних скриптов
Отключение eval / FunctionПолное покрытие Object.defineProperty, запрет динамического кода
Лимит сетиСетевые запросы плагинов ограничены 60/мин против злоупотреблений
Изоляция путейПлагины читают/пишут только свой каталог песочницы (защита от path traversal)
Центр разрешенийДекларации permissions + выдача по одному, каждое действие проверяемо
JS-мостНативные возможности через мост API (хранилище / буфер обмена / файлы…), базовая библиотека внедряется хостом

Уникальный ID плагина (UUID v4)

ID плагинов используют UUID v4 (122 бита случайной энтропии) — коллизии практически невозможны, поэтому дублирующиеся пользовательские ID никогда не перезаписывают и не удаляют друг друга. Рекомендуется автогенерация упаковщиком; при ручном задании используйте полный формат UUID (8-4-4-4-12) — упаковщик проверит формат.

Генерация плагинов ИИ в один клик

Опишите потребность прямо в ИИ-чате CosmosBox:

ИИ-чат
Вы → Сделай цифровую деревянную рыбу; по нажатию — звук с анимацией
ИИ → ✅ Плагин «Цифровая деревянная рыба» создан — установка и запуск в один клик

Плагины, созданные ИИ, автоматически получают базовую библиотеку (хранилище / буфер обмена / адаптация тёмной темы) и сразу устанавливаются из центра плагинов; не нравится — попросите ИИ продолжить правки на странице редактирования.

📤
Создали собственный плагин? Отправьте его через подачу плагинов, чтобы попасть в маркет (канал скоро появится).
МАТРИЦА: ВКЛ — повторите ввод или ESC для выхода