botruntime
Эксплуатация

Консоль: обзор, доступ и навигация

Веб-консоль botruntime.ru: вход по учётной записи, воркспейсы и роли, командная палитра и карта разделов бота.

Консоль — веб-приложение для управления ботами в облаке botruntime.ru. Это SPA поверх того же API, которым пользуются brt и ваши скрипты.

У консоли нет отдельной привилегированной двери. Она ходит по тем же публичным маршрутам API. Всё, что вы видите и меняете в консоли, доступно и напрямую по API. Консоль лишь даёт удобную оболочку.

Отсюда главный принцип: доступ в консоли — это членство в воркспейсе и роль, а не отдельный админский режим. Вы видите те воркспейсы и тех ботов, где состоит ваш аккаунт. И делаете ровно то, что разрешает роль. Супер-доступа мимо API нет.

Тонкий клиент

Консоль не хранит данные и не держит бизнес-логику. Она рендерит ответы API и отправляет обратно ваши действия.

Каждый запрос из браузера несёт токен и проходит ту же проверку тенантности, что и машинный вызов. Воркспейс и роль берутся из токена, а не из того, что нарисовано на экране.

Не можете сделать по API под своим токеном — не сделаете и из консоли. UI прячет недоступные кнопки заранее, но финальное слово за сервером.

Вход

Вы входите в консоль по учётной записи через внешний OIDC-провайдер. Провайдер подтверждает личность и выдаёт короткоживущий session-JWT. Пароли и профили людей платформа не хранит — только связку «аккаунт → его воркспейсы и роли».

JWT короткоживущий, поэтому консоль его не кэширует. Перед каждым запросом она берёт у провайдера свежий токен и кладёт в заголовок Authorization. Истёкшая сессия не тянется через долго открытую вкладку.

Мост «вход → сеть» работает по принципу fail-loud. Если данные запросятся раньше, чем провайдер готов, консоль поднимет явную ошибку и не пойдёт в сеть без авторизации. Тихого запроса «как-нибудь» не будет.

Выход — в меню аккаунта внизу сайдбара. Пока вы не вошли, консоль показывает только экран входа.

Выбранный воркспейс

Почти всё в консоли принадлежит воркспейсу: боты, участники, диалоги, таблицы, интеграции. Поэтому у консоли всегда есть выбранный воркспейс. Он живёт в localStorage и переживает перезагрузку вкладки. Переключатель — вверху сайдбара слева.

Ключевой инвариант кэша: id выбранного воркспейса подмешивается в каждый ключ запроса. Данные разных воркспейсов лежат под разными ключами и не протекают друг в друга. Сменили воркспейс — увидели его данные, а не остатки предыдущего.

Пока воркспейс не выбран, разделы показывают приглашение выбрать или создать воркспейс. Не пустую страницу и не ошибку — это осознанное состояние.

Проект и окружения

В списке ботов одна карточка соответствует одному проекту. Development-runtime, который создаёт brt dev, не становится вторым ботом в каталоге: он привязан к production-боту как отдельное окружение того же проекта.

Переключатель Production / Development находится в общем топбаре и действует на все разделы бота. После переключения консоль читает и изменяет данные выбранного runtime: диалоги, события, логи, аналитику, Evals, таблицы, файлы, интеграции и переменные. URL при этом продолжает указывать на проект, а не на внутренний bot_id окружения.

Данные окружений не объединяются. У каждого runtime собственные диалоги, таблицы, файлы, подключения, секреты, логи и история качества. Переключатель меняет область запросов, но ничего не копирует между Production и Development.

Development нельзя создать без Production-проекта. brt dev передаёт production-привязку из agent.json, а платформа атомарно создаёт runtime внутри этого проекта. Запрос без родительского проекта отклоняется: окружение не может оказаться отдельным ботом или потерять связь с общей карточкой.

У одного проекта может быть несколько Development-runtime. Каждый checkout или разработчик хранит свою локальную привязку в gitignored agent.local.json, поэтому их диалоги, настройки и история качества остаются независимыми.

Страница Окружения в настройках бота показывает Production и все связанные Development-runtime: их числовые runtime ID, дату создания и обновления, число диалогов и запусков Evals. Для Production она отдельно показывает текущую сохранённую версию бандла. Development работает через живую сессию brt dev и не обязан иметь такую версию. admin и owner могут дать Development понятное имя или удалить его. Production удалить на этой странице нельзя.

На обзоре выбранного окружения доступность проверяется по supervisor. Статусы «Работает», «Не запущен» и «Статус недоступен» не выводятся из даты изменения или наличия версии: это отдельная живая проверка. Поэтому недоступная проверка не выдаётся за подтверждённую остановку, а старый updatedAt — за сбой runtime.

Удаление Development необратимо удаляет только данные выбранного runtime: диалоги, файлы, таблицы, интеграции, секреты и историю Evals. Сам проект, Production и остальные Development продолжают работать. Если удалён runtime, записанный в agent.local.json текущего checkout, следующий brt dev обнаружит, что target больше не существует, создаст новый Development и обновит локальную привязку.

Роли

Роль в текущем воркспейсе приходит из GET /v1/admin/me вместе со списком воркспейсов. Она определяет, какие управляющие элементы вообще отрисуются.

РольЧто делает в консоли
memberЧитает данные бота: диалоги, события, логи, аналитику, evals, таблицы, файлы.
adminВсё выше плюс пишет конфигурацию, управляет Development-окружениями и читает аудит.
ownerВсё выше плюс единолично управляет составом участников воркспейса.

Гейтинг двойной. Консоль скрывает недоступные действия — форму добавления участника видит только owner. Сервер перепроверяет право до выполнения. Скрытая кнопка — удобство, реальная граница на бэкенде.

Строка владельца (owner) неизменяема: его роль нельзя понизить, а самого владельца — удалить из воркспейса. Так воркспейс никогда не остаётся без владельца. Полная матрица прав — на странице Воркспейсы, участники и токены.

Карта навигации

Сайдбар контекстный. Вне бота он показывает разделы воркспейса. Внутри бота — переключатель ботов и разделы выбранного бота плюс ссылку назад к списку. Активный раздел подсвечивается по текущему маршруту.

Уровень воркспейса

РазделНазначение
БотыСписок ботов воркспейса и вход в конкретного бота.
УчастникиЛюди в воркспейсе и их роли (управление — у owner).
АудитЖурнал действий воркспейса (доступен admin и owner).

Уровень бота

Разделы одного бота сгруппированы по назначению:

ГруппаРазделЧто внутри
ОбзорСводка по боту: статус, ключевые счётчики.
МониторДиалогиДиалоги и сообщения бота, инспектор переписки.
СобытияПоток событий бота.
ЛогиРантайм-логи бота.
АналитикаАгрегаты по диалогам и потреблению.
EvalsИстория проверок качества, регрессии и результаты assertions.
ОперацииБезопасная история длительных действий интеграций.
ЗнанияТаблицыСтроки таблиц бота, просмотр и правка.
ДанныеФайлыФайлы бота.
ПодключенияИнтеграцииУстановленные интеграции и их подключение.
НастройкиПеременныеЗашифрованные write-only secrets/env бота.
ОкруженияProduction и Development-runtime: обновления, объём данных, имена и удаление ненужных Development.

Значения secrets из раздела «Переменные» невосстановимы: платформа хранит их зашифрованными и наружу не отдаёт. Задать secret можно в консоли или командой brt secret set. Публичная конфигурация управляется отдельно через brt config.

Шелл

Оболочка одинакова на всех страницах:

  • Хлебные крошки в топбаре собираются из маршрута и всегда показывают, где вы находитесь. Каждый уровень, кроме текущего, кликабелен.
  • Переключатель воркспейса вверху сайдбара и переключатель бота внутри бота позволяют прыгать между тенантами и ботами, не возвращаясь к спискам.
  • Переключатель Production / Development в топбаре выбирает runtime для всех разделов текущего проекта.
  • Меню аккаунта и выход — внизу сайдбара, там же ссылка в настройки аккаунта.

Командная палитра

Палитра открывается по ⌘K (или Ctrl+K) на любой странице и даёт переход без мыши: к любому боту воркспейса, к разделам текущего бота, к общей навигации. Ввод фильтрует список, стрелки и Enter выбирают.

Две оси доступа

Доступ к платформе идёт по двум параллельным осям. Консоль работает по первой, автоматизация — по второй. Друг друга они не подменяют.

  • Человеческий вход (OIDC). Вы входите в консоль по учётной записи. Session-JWT ходит по human-дереву API (/v1/admin/me, /v1/admin/workspaces/*). Scope — членство человека в воркспейсах.
  • Машинный доступ (ключ или PAT). После входа brt работает с личным токеном (PAT) выбранного профиля, а production-команды конкретного бота — с привязанным ключом бота. Scope выводится из самих учётных данных.

Обычный путь входа в CLI — brt login: команда открывает device authorization в браузере, после подтверждения предлагает выбрать воркспейс и сохраняет профиль. PAT со страницы «Аккаунт» нужен для ручного входа через brt login --no-device или автоматизации; его значение показывается ровно один раз. Ключ бота также показывается ровно один раз — при выпуске — и безопасно передаётся в brt link --key-stdin. Полная таксономия токенов и правила резолва тенанта — на странице тенантности.

Секреты и токены не передавайте аргументами командной строки. Значение PAT или секрета задавайте через stdin или файл, иначе оно осядет в истории shell и списке процессов:

terminal
printf '%s' "$MY_SECRET" | brt secret set STRIPE_KEY

Дальше

On this page