Життєвий цикл

Послідовність запуску

  1. Main process запускає integrations worker (WorkerMain('integrations')) і чекає на loadComplete.
  2. Main надсилає executeCode з { integration: { id, name, permissions, … }, codePath }.
  3. Worker будує GenerateContext(), потім виконує index.js аддона у vm.runInContext (таймаут початкового виконання: 5 секунд).
  4. Код аддона реєструє ендпоінти, схему конфігурації та обробники подій під час цієї фази завантаження.

Довготривала робота має продовжуватися після завантаження через setTimeout, setInterval, sleep або async-обробники — не блокуючий синхронний код під час початкового запуску VM.

Коли worker перезапускається

Worker перезапускається, коли:

storage.Read() / storage.Write() зберігаються між перезапусками worker у межах одного встановлення. Параметри api.config зберігаються в конфігурації застосунку.

Захист від циклу падінь

Якщо процес worker падає (неперехоплений виняток, фатальна помилка, аварійне завершення), StreamKit+ перезапускає його автоматично — як при звичайному рестарті.

Щоб уникнути нескінченного циклу перезапусків, застосунок відстежує послідовні падіння:

Правило Значення
Максимум падінь поспіль 3
Стабільна робота для скидання лічильника 30 секунд після loadComplete

Що вважається падінням

Що не вважається падінням

Коли ліміт досягнуто

  1. Автоперезапуск припиняється; worker аддона більше не запускається.
  2. Користувач бачить сповіщення про помилку та статус аддона в стані error.
  3. У налаштуваннях аддон залишається увімкненим, але показується бейдж Зупинено через помилки.
  4. Після перезапуску застосунку аддон досі не стартує, доки користувач не вживе заходів.

Як відновити роботу

Користувач має перезапустити аддон вручну в налаштуваннях (кнопка ↻) або вимкнути й знову ввімкнути його. Це скидає прапорець зупинки й запускає новий worker з обнуленим лічильником падінь.

Що важливо автору аддона

Статичні web-маршрути

Коли встановлено manifest.web і надано WEB_CONTENT (або ROOT), main process реєструє статичні маршрути:

http://localhost:{WEB_SERVER_PORT}/addon_static/{id}/

Корінь обслуговує файл web; шляхи з web_contents доступні під тим самим префіксом. Маршрути видаляються при вимкненні, перезапуску або деінсталяції.

Відсутні файли

Якщо manifest.json або index.js відсутні за записаним шляхом встановлення, застосунок вважає аддон зламаним: у налаштуваннях показується банер помилки, налаштування не відкриваються, доступна лише деінсталяція. Тригери оверлею/таймера, що посилаються на цей аддон, очищуються під час запуску.