В LVLZ есть два входа. Можно написать агенту, а можно открыть рабочее пространство в веб-приложении. Мы рано установили правило: всё, что можно сделать в одном, можно сделать и в другом. В этой статье рассказываем, как мы держим это обещание, не полагаясь на память и добрые намерения.
Почему паритет важен
Если приложение умеет архивировать проект, а агент нет, вы привыкаете не просить об этом агента. Если агент может настроить регулярную задачу, а приложение не может её показать, вы перестаёте доверять приложению. Каждый такой разрыв учит обходить продукт стороной. Паритет означает, что вам никогда не придётся гадать, какая сторона что умеет.
Одно описание на каждую возможность
Каждая операция — например, создание задачи, отправка письма или запуск задачи в браузере — описывается один раз в общем реестре. Описание содержит:
- постоянный ключ, например
task.create, - типизированную схему входных данных,
- способ защиты (нужно ли ваше подтверждение),
- интерфейсы, в которых она доступна,
- пример того, как вы попросили бы о ней простыми словами.
Из этого единственного описания мы генерируем инструмент, который вызывает агент, HTTP-эндпоинт, который вызывает приложение, и запись в манифесте. Один и тот же обработчик обслуживает и агента, и приложение, поэтому поведение совпадает по построению.
Проверка, которая валит сборку
Сами по себе описания паритета не гарантируют, ведь каждую сторону ещё нужно реализовать. Поэтому наша сборка запускает проверку паритета. Если возможность помечена как доступная, но одна из сторон не реализовала какую-то из её операций, сборка падает. Если операция реализована везде, но всё ещё помечена как «скоро», сборка тоже падает, чтобы публичный статус не отставал от реальности.
Сайт читает тот же список
Манифест питает и этот сайт. Страница возможностей и все страницы под ней показывают каждую возможность со статусом — «Доступно», «Скоро» или «Позже» — и с тем, где она работает: в приложении или в WhatsApp. Когда мы что-то выпускаем, страница обновляется при следующем деплое. Если мы пишем, что что-то появится, значит, так сказано в реестре.
Что это значит для вас
LVLZ достаточно освоить один раз. Всё, что вы найдёте в приложении, можно попросить сообщением, а всё, что делает агент, вы найдёте в приложении. И читая наш список возможностей, вы читаете код.