Интерфейсы Low-code Runtime
Гарантированные A2A, MCP, FileRef и проверки состояния Low-code Runtime 2026.3.5.
Граница доступа
Low-code Runtime не является прямым общедоступным сервером. Пользователь и AES
вызывают агента только через Platform Agent Gateway. Gateway проверяет
удостоверение, связь маршрута с конкретной версией и право
agent#invoke, затем передает короткоживущее удостоверение,
предназначенное этой рабочей нагрузке.
Внутренний адрес Low-code Runtime не публикуется Agent Registry и не должен использоваться клиентом.
Зафиксированные версии
| Контракт | Версия |
|---|---|
| A2A | Спецификация 1.0.0, A2A-Version: 1.0, HTTP+JSON |
| MCP | 2025-11-25, Streamable HTTP |
| FileRef | platform.file-ref/v1 |
| Исходная схема | platform.low-code.flow/v2 |
| Манифест | platform.low-code.publish-manifest/v2 |
| JSON Schema | 2020-12 |
Модели A2A и MCP преобразуются во внутренний нейтральный запрос исполнения. Они не используются как канонические внутренние модели приложения.
Проверки состояния и карточка
| Метод и путь | Назначение |
|---|---|
GET /health/live | Проверка живого процесса |
GET /health/ready | Проверка источника, манифеста, политики, точки входа, карточки и критической настройки |
GET /.well-known/agent-card.json | Проверенная карточка A2A, соответствующая включённому профилю среды исполнения |
Эти маршруты принадлежат эксплуатационной и контрольной границе среды. Их публичность определяется политикой маршрутизации, а не фактом наличия в приложении.
Карточка формируется из манифеста и фактического реестра возможностей среды
исполнения: идентификатор, версия, адрес, навыки, схемы и режимы
медиа-данных берутся из манифеста и маршрутизации развёртывания, а не из
произвольных полей схемы. Флаги возможностей генерируются из реестра
возможностей среды исполнения и подтверждений соответствия. Запрошенный, но
нереализованный режим блокирует готовность и регистрацию кодом
advertised_capability_unavailable.
Для потоковой передачи готовность дополнительно требует A2A
1.0, режим исполнения a2a_agent и значение
contract.capabilities.streaming=true. Отсутствие значения или
false оставляет карточку нестриминговой, а
message:stream возвращает типизированный ответ о
неподдерживаемой операции.
Профиль A2A первой поставки
| Метод | Поведение |
|---|---|
POST /message:send | Поддерживаемый синхронный вызов с текстом или структурированными данными → конечное Message |
POST /message:stream | При streaming=true: SSE, сначала Task, затем упорядоченные обновления статуса и артефактов, закрытие на конечном статусе; иначе типизированный ответ о неподдерживаемой операции |
| Получение и список задач | Локальные для процесса снимки в пределах жизни одной реплики среды исполнения |
| Подписка на задачу | При streaming=true: сначала текущий Task, затем живые обновления; завершённая задача → UnsupportedOperationError |
| Отмена задачи | Типизированный ответ о неподдерживаемой операции |
| Уведомления о выполнении | Не декларируются, типизированный ответ о неподдерживаемой операции |
| Расширенная карточка | Типизированный ответ о недоступной настройке |
streaming=true не означает устойчивые (durable) задачи: хранилище
и брокер потоков находятся в одном процессе, профиль развёртывания — одна
реплика, поиск задачи после перезапуска пода не гарантируется. Значение
манифеста tasks=true резервирует отдельный устойчивый профиль и
блокирует готовность до новой реализации или решения.
Каждый запрос, за исключением выделенных маршрутов health и карточки, приходит
через Platform Agent Gateway и требует согласования версии A2A. Поддерживаются
ровно те режимы медиа-данных, которые указаны в карточке. Входные и выходные
JSON проверяются по схемам манифеста. Ошибки используют стандартный
типизированный результат A2A или application/problem+json и никогда
не возвращают частичный успех или необработанное исключение.
Последовательность обработки:
- проверить версию протокола, тип содержимого и ограничение размера;
- проверить удостоверение и право выполнения;
- разрешить FileRef, если включена соответствующая возможность;
- применить входные Guardrails;
- преобразовать текстовые и структурные части сообщения и доверенный контекст во внутренний запрос;
- исполнить выбранную точку входа схемы
lfx; - применить выходные Guardrails и проверку по JSON Schema;
- преобразовать результат в A2A Message или выбранный профиль задачи;
- при отказе вернуть очищенный стабильный код ошибки и
traceId.
Профиль MCP первой поставки
MCP включается только если режимы исполнения манифеста содержат
mcp_tool и проверка соответствия при запуске прошла успешно.
Поддерживаются:
initializeи завершение начальной установки сеанса для редакции 2025-11-25;tools/list, возвращающий ровно один неизменяемый инструмент схемы с входной и выходной JSON Schema иtools.listChanged=falseдля первой поставки;tools/call, проверяющий аргументы, вызывающий общий прикладной сценарий и возвращающий структурированный результат или ошибку, соответствующий схеме.
Не поддерживаются и не объявляются ресурсы, шаблоны ресурсов, подсказки,
выборка, корни, elicitation, управление журналированием и
экспериментальные задачи MCP. Неверный метод возвращает типизированную
ошибку в соответствии с протоколом без запуска схемы.
Имя инструмента — стабильный идентификатор из манифеста; заголовок и
отображаемое имя хранятся отдельно. Аннотации инструмента не выдают
разрешения безопасности. Вызов MCP имеет собственный контракт
безопасности и не наследует A2A authenticated_all
автоматически. До его принятия первая поставка MCP остаётся защищённым
подтверждением R1, а не производственной экспозицией R2. Среда исполнения не
воссоздаёт идентичность пользователя из полей сеанса или запроса MCP.
Изменение определения инструмента создаёт новую ревизию манифеста и рабочей
нагрузки с обычной сверкой реестра. Динамическое уведомление
notifications/tools/list_changed не входит в первую поставку.
FileRef
Клиент передает логическую ссылку:
{
"apiVersion": "platform.file-ref/v1",
"fileId": "00000000-0000-0000-0000-000000000000",
"name": "contract.pdf",
"mediaType": "application/pdf",
"size": 245000,
"sha256": "64-hex",
"capability": "opaque-target-bound-value",
"expiresAt": "2026-08-11T10:15:00Z"
}Проверка полномочия выполняется на собственном эндпоинте файла и проверяет:
- подпись, издателя, получателя и срок действия;
- владельца и действующего субъекта, а также вызывающего там, где это требуется;
- точный целевой агент, операцию и запуск/сеанс;
- идентификатор файла, хеш, размер и медиа-тип;
- разрешённое количество или диапазон чтений и отзыв, если профиль их поддерживает.
Ограничение по субъекту или вызывающему может храниться внутри непрозрачного полномочия и проверяться собственным эндпоинтом. Это не передаёт среде исполнения отдельную идентичность пользователя и не возвращает исходный bearer-токен.
Среда исполнения не принимает угаданный идентификатор файла, произвольный URL, путь поставщика или пользовательский bearer как достаточное полномочие. Межпользовательские и меж-агентские ссылки, ссылки на другую операцию, а также просроченное или изменённое полномочие отклоняются до загрузки у поставщика и выполнения схемы.
Адаптер FileRef выполняет:
- проверять метаданные и полномочие через типизированный порт доступа к файлам;
- читать поток с ограничением размера и времени и проверять хеш либо получать одноразовый канал с ограниченной областью чтения;
- проверять поддерживаемый поставщиком медиа-тип;
- загрузить или сопоставить байты в детали поставщика
lfx; - передавать в адаптер
lfxтолько внутренний идентификатор или путь файла поставщика; - удалить временный объект поставщика или дождаться истечения его срока согласно политике хранения;
- в журнал записывать безопасный идентификатор файла, префикс хеша и принятое решение, но никогда байты, полномочие или подписанный URL.
Путь или идентификатор файла поставщика не возвращается как полномочное
FileRef платформы и не может быть повторно использован для другого
агента или запуска. Ошибка сопоставления возвращает типизированный
file_provider_mapping_failed, исходное полномочие при этом остаётся
скрытым.
Точная форма интерфейса Agent Registry опубликована в отдельном справочнике.