Разработка и развёртывание · 6 мин чтения
Разработка расширений и плагинов
Добавляйте заметки, транскрибацию, коннекторы и инструменты Beaver без форка ядра.
Некоторые задачи слишком специфичны для ядра: заметки с отправкой в вашу wiki, запуск транскрибации или коннектор к внутренней системе. Плагины BraveDay добавляют такие возможности отдельными небольшими пакетами, которые работают вместе с продуктом. Форкать ядро ради частного случая не нужно.
Плагин — это пакет с default export `definePlugin({...})`, который регистрирует новые возможности. Он собирается с `@dayotter/plugin-sdk`; SDK не зависит от внутренних модулей BraveDay, а всё необходимое host передаёт во время выполнения.
Что может добавить плагин
- Инструменты Beaver — новые AI-возможности. Инструменты `read` отвечают сразу, а `action` работают по принципу confirm-first: Beaver предлагает карточку, человек подтверждает, и только потом выполняется действие.
- Хуки жизненного цикла бронирования — реакция на создание, перенос или отмену встречи: создать заметку, запустить транскрибацию, синхронизировать внешнюю систему.
- Коннекторы — доступ к внешним сервисам через ограниченный HTTP-клиент с защитой от SSRF и хранение credentials в зашифрованном хранилище плагина.
Минимальный плагин
Каждая runtime-функция получает context: изолированное `storage` для JSON и зашифрованных секретов, безопасный HTTP-клиент `http`, логгер со своим namespace и `config`. Так выглядит плагин с одним confirm-first инструментом Beaver:
- id / name — стабильный id в kebab-case, который создаёт namespace для инструментов и хранилища, и отображаемое имя.
- tools[] — у каждого инструмента есть имя, JSON-schema входных данных, kind (read | action) и асинхронная функция `run(ctx, input)`.
- bookingHooks[] — каждый хук указывает события и асинхронную функцию `handle(ctx, event, booking)`.
Совет
Начните с примеров в packages/plugins/: `notes` показывает инструмент Beaver, booking hook и storage, а `webhook-relay` — коннектор, который пересылает события бронирования на ваш URL. Скопируйте ближайший пример и измените его.
Включение плагина
- Добавьте пакет плагина в сборку и импортируйте его в список включённых плагинов host: packages/plugin-host/src/enabled.ts.
- Укажите в DAYOTTER_PLUGINS разделённый запятыми список id, например DAYOTTER_PLUGINS=notes,webhook-relay.
- Перезапустите систему. По умолчанию плагины выключены, поэтому до явного включения ядро работает как прежде.
Confirm-first и безопасность по умолчанию
- Инструменты action не запускаются сами: они проходят через ту же карточку предложение→подтверждение, что и встроенные инструменты. Флаг `danger` добавляет второе подтверждение.
- Storage изолирован по паре «плагин, пользователь»: один плагин не может читать данные другого. Секреты зашифрованы при хранении.
- `ctx.http` отклоняет непубличные hosts и не следует redirects, поэтому плагин нельзя обманом заставить обратиться к внутренней инфраструктуре.
Обратите внимание
Плагины работают внутри процесса с настоящим доступом — включайте только те, которым доверяете. В BraveDay Cloud доступен отобранный набор; в собственном развёртывании вы сами решаете, что установить и включить.
Связанные руководства
Для разработчиков: API, вебхуки и embed
Ключи и REST endpoints, подписанные события бронирований и встраиваемый виджет.
Ask Beaver — AI-помощник
Пишите или говорите с календарём: Beaver готовит каждое изменение и ничего не делает без вашего подтверждения.
Собственное развёртывание
Как BraveDay разворачивается на вашем облачном сервере и из чего состоит система.
Хотите попробовать? Начать бесплатно, или открыть все руководства.