Протокол Model Context Protocol
Model Context Protocol (MCP) — это открытый стандарт, позволяющий агентам искусственного интеллекта взаимодействовать с внешними сервисами и источниками данных. Он обеспечивает совместимость таких приложений, как Claude, Claude Code, Codex, и редакторов, таких как Zed, Cursor или Visual Studio Code, с Tuist.
Tuist размещает серверную точку входа Model Context Protocol по адресу https://tuist.dev/mcp. Подключив к ней ваш клиент, агенты смогут получать доступ к данным ваших проектов Tuist, включая аналитику тестов, анализ нестабильных тестов и многое другое. Большинство инструментов работают только в режиме чтения и имеют доступ исключительно к данным проектов Tuist после аутентификации. Инструменты настройки аккаунта могут перечислять аккаунты, создавать организации, создавать проекты и добавлять существующих пользователей в организации, если у аутентифицированного пользователя есть необходимые разрешения. Каждый инструмент предоставляет аннотации, указывающие, работает ли он только в режиме чтения, может ли он вызвать изменения, которые трудно отменить, и может ли он изменять состояние публичного интернета. Инструменты настройки аккаунта требуют аутентификации пользователя. Они недоступны для токенов проектов или обычных токенов аккаунтов. Когда пользователь авторизует клиент в браузере или подтверждает регистрацию через auth.md, Tuist связывает эти учетные данные с пользователем только в точке входа Model Context Protocol, чтобы инструменты настройки могли завершить запрошенный рабочий процесс.
Tuist реализует протокол версии 2026-07-28. Запросы являются безсостоятельными: клиенты отправляют метаданные протокола с каждым запросом и могут вызывать инструменты напрямую без инициализации. server/discover возвращает идентификатор сервера, его возможности, поддерживаемые версии и инструкции. Идентификаторы сессий или независимые потоки событий отсутствуют. Клиенты, использующие поток инициализации версий 2025-06-18 или 2025-03-26, по-прежнему поддерживаются; они также работают без серверных сессий.
Model Context Protocol против навыков (skills)#
Инструменты Model Context Protocol и навыки могут пересекаться по функциональности. Учитывая текущее перекрытие между ними, выбирайте один подход для каждого рабочего процесса и используйте его последовательно, вместо того чтобы смешивать оба в одном потоке.
Для клиентов, поддерживающих установку плагинов, используйте плагины Tuist, чтобы установить их вместе.
Конфигурация#
Добавьте https://tuist.dev/mcp в качестве удаленного сервера Model Context Protocol в вашем клиенте. Инструкции по инициализации сервера и публичная карточка сервера описывают OAuth 2.0 с динамической регистрацией клиента и стандартный поток авторизации через браузер непосредственно в тексте, не требуя от агентов загружать или следовать внешним документам аутентификации. Эти общесерверные инструкции сохраняют рекомендации по рабочему процессу общими: аутентификация инструментов не аутентифицирует локальные инструменты командной строки или интеграции с системами сборки, и агенты должны проверять запрашиваемые изменения через соответствующие инструменты Tuist. Настройка и проверки аутентификации, специфичные для системы сборки, документированы в руководствах по интеграции и подсказках. Tuist по-прежнему предоставляет как метаданные обнаружения Open Authorization, так и текущий протокол auth.md по адресу https://tuist.dev/auth.md отдельно.
Точка входа принимает безсостоятельный жизненный цикл запросов Model Context Protocol версии 2026-07-28, включая server/discover, наряду со старым жизненным циклом на основе сессий. Существующие клиенты могут продолжать использовать свой текущий метод подключения.
Клиенты, поддерживающие события Model Context Protocol, могут подписываться на события проекта. См. раздел События для получения информации о доступных событиях и требованиях к доставке.
Клиенты, которые уже поддерживают удаленную аутентификацию через браузер, могут продолжать аутентифицироваться в браузере. Клиенты и агенты, поддерживающие auth.md, могут регистрироваться анонимно, предоставлять доверенное утверждение идентичности провайдера или начинать процесс подтверждения электронной почты с аутентификацией сервиса. Регистрация возвращает утверждение идентичности, подписанное Tuist, которое агент обменивает на стандартной конечной точке токенов на часовой токен доступа. Tuist публикует свой открытый ключ подписи и поддерживает стандартное отзывание токенов и доставку событий безопасности от провайдера.
Неаутентифицированный агент должен прочитать заголовок WWW-Authenticate, возвращаемый точкой входа Model Context Protocol, получить метаданные защищенного ресурса, получить метаданные сервера авторизации и перейти по URL-адресу agent_auth.skill. Tuist также возвращает тот же локальный URL-адрес auth_md в теле ответа об отказе в доступе, чтобы клиенты, управляемые языковыми моделями, могли обнаружить этот поток без reliance на нативную интеграцию клиента. Локальный для развертывания документ является источником истины для имен конечных точек, тел запросов, опроса подтверждений и обмена утверждениями.
Прежде чем агент начнет процесс подтверждения электронной почты, он должен попросить пользователя подтвердить адрес электронной почты для своего аккаунта Tuist. Он не должен определять этот адрес из профиля провайдера, конфигурации Git, переменной окружения или метаданных сессии.
Точка входа использует группу областей видимости mcp. Анонимные учетные данные до подтверждения могут обнаруживать возможности и читать публичные руководства по интеграции, но они не рассматриваются как вошедшие в систему пользователи. После авторизации через браузер или подтверждения, учетные данные получают область видимости пользователя, и каждый инструмент применяет те же проверки авторизации, что и панель управления. Подробности см. в документации по группам областей видимости.
Инструменты работают с проектами, к которым у аутентифицированного пользователя уже есть доступ. Инструменты сборки для Xcode и Gradle принимают UUID сборки или URL-адрес дашборда. UUID должен однозначно идентифицировать один проект; если он встречается в нескольких проектах, инструмент возвращает ошибку «не найдено», вместо того чтобы выбирать отчёт другого проекта. Чтение данных через дашборд и API в рамках проекта остаётся доступным. Идентификаторы действующих лиц — это непроверенные метки, а не учётные данные или дополнительные права доступа.
Инструменты списка сборок и детализации предоставляют необязательные метаданные tuist_version: CLI Tuist для Xcode и Cargo, плагин Tuist Gradle для Gradle и библиотека tuist_ex для Mix. Xcode также предоставляет tuist_generation_version из связанного события генерации проекта, которое может отличаться от версии CLI, выполнившего загрузку. Отсутствующие значения равны null и не выводятся из данных сервера или другого отчёта. Bazel использует свой существующий bazel_version; детали запуска Once предоставляют once_version. Эти поля описывают сообщаемые версии, а не проверенную идентификацию или версии контракта взаимодействия. REST-эндпоинты сборок предоставляют те же метаданные. Существующие интеграции и навыки работы с нестабильными тестами не зависят от полей версий и не требуют изменений в рабочем процессе.
Операторы Tuist, исследующие аккаунт клиента, делают это через внутренние инструменты операций Tuist, которые записывают каждый вызов; прямое подключение к этой точке входа не даёт доступа сверх членства самого пользователя.
Claude Code
Выполните:
claude mcp add --transport http tuist https://tuist.dev/mcp
Если безголовый клиент Claude Code не передаёт модели информацию о неудачном подключении к нативному серверу, потребуйте от агента проверить неаутентифицированный ответ протокола передачи гипертекста настроенной точки входа перед поиском в размещённой документации или редактированием проекта. Ответ направляет модель к локальному документу auth.md развёртывания, даже если аутентификация через браузер недоступна.
Codex
Выполните:
codex mcp add tuist --url https://tuist.dev/mcp
codex mcp login tuist
Завершите вход через браузер перед запуском нового codex exec. Codex считывает инструкции сервера Tuist во время инициализации, поэтому запросы на оптимизацию Gradle автоматически получают рабочий процесс аутентификации и проверки.
Claude Desktop
Откройте Settings → Connectors → Add custom connector, затем установите:
- Name:
tuist - URL:
https://tuist.dev/mcp
При появлении запроса завершите Open Authorization в браузере.
Pi
Pi не включает клиент Model Context Protocol. Вы можете установить стороннее расширение pi-mcp-adapter после изучения его исходного кода и последствий для безопасности:
pi install npm:pi-mcp-adapter
Добавьте файл .mcp.json на уровне проекта:
{
"mcpServers": {
"tuist": {
"url": "https://tuist.dev/mcp",
"auth": false
}
}
}
Установка auth в значение false предотвращает скрытие неавторизованного ответа Tuist обработчиком аутентификации браузера адаптера. После этого безголовый агент может прочитать возвращённый URL auth_md и следовать процессу регистрации Tuist, обмена утверждением идентичности и опроса подтверждения. Настройте полученный токен доступа как bearer-токен или позвольте агенту выполнять аутентифицированные вызовы Model Context Protocol напрямую.
Если вы предпочитаете аутентификацию через браузер, установите auth в значение "oauth". Для этого потока держите один процесс активным с помощью режима удалённого вызова процедур Pi до завершения аутентификации:
pi --mode rpc
Не разделяйте ожидающую аутентификацию браузера между отдельными вызовами pi --print, так как процесс, владеющий состоянием обратного вызова, уже завершился.
OpenCode
Добавьте сервер Tuist Model Context Protocol в opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tuist": {
"type": "remote",
"url": "https://tuist.dev/mcp"
}
}
}
Затем аутентифицируйте сервер:
opencode mcp auth tuist
Cursor
Откройте Cursor Settings → Tools & Integrations → Model Context Protocol Tools и добавьте:
- Name:
tuist - URL:
https://tuist.dev/mcp
Visual Studio Code
Используйте Command Palette → MCP: Add Server, затем настройте сервер протокола передачи гипертекста со следующими параметрами:
- Name:
tuist - URL:
https://tuist.dev/mcp
Zed
Откройте Agent panel → Settings → Add Custom Server, затем установите:
- Name:
tuist - URL:
https://tuist.dev/mcp
Если ваш агент поддерживает auth.md, он может начать работу анонимно без открытия браузера. Доверенная идентичность провайдера также может завершить процесс без браузера, если идентичность провайдера уже связана. Для электронной почты с аутентификацией сервиса, анонимного подтверждения или первой ссылки на провайдера агент показывает вам ссылку на проверку Tuist и шестизначный код. Откройте ссылку, войдите в систему и введите код агента на странице Tuist. Никогда не отправляйте код обратно агенту. Метаданные сервера авторизации Tuist указывают непосредственно на собственный /auth.md развёртывания, который содержит точные формы запросов и опроса.
Интеграции систем сборки используют два набора учётных данных#
Учётные данные, используемые для инструментов Model Context Protocol, не аутентифицируют плагин Gradle или удалённые сервисы Bazel. Перед тем как агент изменит или проверит интеграцию Gradle или Bazel, он должен выполнить:
tuist auth whoami --url https://tuist.dev
Если эта команда не аутентифицирована, агент должен остановиться и попросить пользователя выполнить:
tuist auth login --url https://tuist.dev
Для локального или самостоятельно размещённого развёртывания замените URL в обеих командах и в tuist.toml. Сохраняйте одинаковое написание имени хоста везде. Например, localhost и 127.0.0.1 используют отдельные сохранённые учётные данные.
Возможности#
Инструменты#
Следующие инструменты доступны через сервер Tuist Model Context Protocol:
Каждый инструмент публикует понятное человеку описание вместе с явными схемами ввода и вывода. Успешные вызовы возвращают структурированный контент, соответствующий заявленной схеме вывода, а также тот же результат, сериализованный в виде текста для клиентов, которые ещё не потребляют структурированный контент.
Инструменты, принимающие идентификатор одной записи, такой как build_run_id, test_run_id, test_case_id, bundle_id, run_id, generation_id или cache_run_id, также принимают URL-адрес этой записи из панели управления Tuist. Вставьте URL прямо из браузера вместо того, чтобы извлекать из него идентификатор.
Поиск по документации и сообществу#
Этот инструмент только для чтения выполняет поиск по документации Tuist, справочнику прикладного программного интерфейса, релизам на GitHub, форуму сообщества и задачам на GitHub через тот же поисковый движок, который работает на сайте документации. Результаты поиска по релизам включают продукт, версию, дату публикации и статус предварительной версии. По умолчанию выполняется поиск по стабильным релизам, предварительные релизы можно включить с помощью include_prereleases. Инструмент доступен только на сервере, размещённом Tuist, по адресу https://tuist.dev/mcp.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
search_tuist | Поиск по публичной документации Tuist, справочнику прикладного программного интерфейса, релизам на GitHub, обсуждениям в сообществе и задачам на GitHub. При необходимости ограничьте поиск одним source (docs, api_reference, releases, forum, issues). | query |
Обратная связь#
Агенты могут сообщить команде Tuist, если инструмент или подсказка Tuist не сработали так, как они ожидали, например, выдали непонятный результат, ошибку, отсутствующие данные или недостающую возможность. Агентам предлагается предложить отчёт и отправить его только после вашего согласия. Каждый отчёт открывает диалог со службой поддержки Tuist, которая может ответить вам по электронной почте. Отчёт включает то, что ожидал агент, что произошло, необязательное предложение, ваш идентификатор пользователя Tuist, имя пользователя и электронную почту, а также организации, к которым вы принадлежите. Агенты также могут указать аккаунт и проект, в которых возникла проблема, чтобы команда знала, с какой организацией связаться; принимаются только аккаунты, к которым вы имеете доступ. Отчёты могут отправлять только агенты, вошедшие в систему как пользователь Tuist, и каждый пользователь может открывать до 10 отчётов в час. Инструмент доступен только на сервере, размещённом Tuist, по адресу https://tuist.dev/mcp.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
report_feedback | Сообщить о проблеме с инструментом или подсказкой Tuist. При необходимости укажите tool_name, account_handle и project_handle, в которых это произошло, и добавьте suggestion. | category, expected, actual |
Ответы на основе исходного кода#
Эти инструменты только для чтения позволяют агентам использовать точную публичную ревизию исходного кода Tuist, развёрнутую вместе с размещённым сервером, в качестве источника истины для ответов, зависящих от текущего поведения. Они доступны только по адресу https://tuist.dev/mcp.
Совместимые клиенты получают фактические описания ревизии исходного кода инструментов, ссылки и ограничения результатов во время инициализации вместе с информацией об аутентификации OAuth. Эти описания не предписывают стиль ответа или рабочий процесс проверки. Пользователи могут задать вопрос напрямую, не вызывая сначала подсказку ask_tuist; подсказка остаётся доступной для явного рабочего процесса на основе исходного кода.
Каждая операция имеет фиксированные ограничения на параллелизм, длительность, обход, количество прочитанных байтов и размер ответа. Результаты поиска и списков включают поля truncated и truncation_reason. Если результат усечён, сузьте путь, шаблон файла или поисковый запрос вместо того, чтобы считать результат исчерпывающим.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
search_tuist_code | Отвечайте на вопросы о текущем поведении, значениях по умолчанию, конфигурации, функциональных флагах, обработке ошибок или недокументированных деталях, выполняя поиск по файлам исходного кода. Результаты включают окружающие строки, ссылки на исходный код, привязанные к ревизии, и статистику сканирования. | pattern |
list_tuist_files | Обнаруживайте подсистему исходного кода или близлежащие тесты, когда соответствующий путь неизвестен. Списки имеют ограниченную глубину и количество результатов. | Нет |
read_tuist_file | Просматривайте определённый диапазон строк в файле реализации, месте вызова или тесте после нахождения соответствующего пути. Усечённые ответы предоставляют next_start_line для продолжения. | path |
Проекты#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_accounts | Перечисляет имена личных аккаунтов и аккаунтов организаций, доступные аутентифицированному пользователю, включая информацию о том, может ли каждый аккаунт создавать проекты. | Нет |
get_organization | Получить список участников организации. Ожидающие приглашения требуют тех же прав администратора, что и панель управления; токены принятия приглашений никогда не возвращаются. | account_handle |
create_organization | Создать организацию Tuist для аутентифицированного пользователя. | handle |
create_project | Создать проект Tuist под аккаунтом, к которому имеет доступ аутентифицированный пользователь. | account_handle, project_handle |
add_organization_member | Добавить существующего пользователя Tuist в организацию или обновить роль существующего участника. Принимает user (по умолчанию), admin или viewer, где наблюдатель может читать панели управления и запуски, но не может ничего изменять. | organization_handle, email |
invite_organization_member | Пригласить адрес электронной почты в организацию, независимо от того, принадлежит ли он существующему пользователю Tuist. Tuist отправляет по электронной почте ссылку для принятия, которая истекает через 14 дней; когда сервер не может отправить электронное письмо, email_sent имеет значение false, и ссылку необходимо скопировать из панели управления. Принимает user (по умолчанию), admin или viewer. Требуются права администратора организации. | organization_handle, email |
cancel_organization_invitation | Отменить ожидающее приглашение в организацию, чтобы его ссылка больше не могла быть принята. Требуются права администратора организации. | organization_handle, email |
list_projects | Перечислить все проекты, доступные аутентифицированному пользователю. | Нет |
get_project | Получить конфигурацию проекта и URL подключенного репозитория. | account_handle, project_handle |
connect_project_repository | Связать проект с репозиторием GitHub, к которому имеет доступ установка GitHub App аккаунта. Проект использует ветку по умолчанию репозитория. Требуются права администратора проекта. | account_handle, project_handle, repository_full_handle |
disconnect_project_repository | Удалить связь проекта с его репозиторием GitHub. Требуются права администратора проекта. | account_handle, project_handle |
Токены аккаунта#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_account_tokens | Перечислить метаданные токенов аккаунта без раскрытия значений токенов. | account_handle |
get_account_token | Получить метаданные токена аккаунта без раскрытия его значения. | account_handle, token_id |
list_project_tokens | Перечислить метаданные токенов проекта без раскрытия значений токенов. | account_handle, project_handle |
Раннеры непрерывной интеграции#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_runner_jobs | Перечислить задачи раннеров непрерывной интеграции для аккаунта. | account_handle |
get_runner_job | Получить задачу раннера непрерывной интеграции. | account_handle, workflow_job_id |
list_runner_job_steps | Перечислить шаги, записанные для задачи раннера непрерывной интеграции. | account_handle, workflow_job_id |
list_runner_job_metrics | Перечислить метрики машины, записанные для задачи раннера непрерывной интеграции. | account_handle, workflow_job_id |
list_runner_job_logs | Перечислить до 500 захваченных строк лога для задачи раннера непрерывной интеграции. | account_handle, workflow_job_id |
list_runner_workflows | Перечислить сводки рабочих процессов непрерывной интеграции для аккаунта. | account_handle |
list_runner_profiles | Перечислить профили раннеров непрерывной интеграции для аккаунта с меткой runs-on каждого. | account_handle |
get_runner_catalog | Перечислить конфигурации машин и версии Xcode, которые может использовать профиль раннера. | account_handle |
create_runner_profile | Создать профиль раннера с указанием платформы, конфигурации машины и, для macOS, версии Xcode. При необходимости укажите, для каких веток сохранять изменения томов кэша. Требуются права администратора аккаунта или область действия account:runners:write. | account_handle, name, platform, vcpus, memory_gb |
update_runner_profile | Изменить конфигурацию машины, версию Xcode профиля раннера или ветки, для которых сохраняются изменения пользовательского тома кэша. Пропущенные поля сохраняют свои значения. Требуются права администратора аккаунта или область действия account:runners:write. | account_handle, profile_name |
delete_runner_profile | Удалить профиль раннера после подтверждения пользователем. Профили по умолчанию удалить нельзя. Требуются права администратора аккаунта или область действия account:runners:write. | account_handle, profile_name |
Инструменты томов раннера предоставляют те же данные, что и панель управления Volumes. Инструменты чтения требуют доступа к раннеру; очистка требует прав администратора аккаунта или области действия account:runners:write, а также подтверждения пользователя.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_runner_volumes | Фильтрация по имени и репозиторию, сортировка и пагинация томов. | account_handle |
get_runner_volume | Репозиторий, платформа, емкость, используемое пространство и последнее использование. | account_handle, volume_id |
list_runner_volume_jobs | Пагинированные ссылки на задачи и рабочие процессы, статус кэша, результат попадания и время монтирования. | account_handle, volume_id |
list_runner_job_volumes | Тома, смонтированные задачей. | account_handle, workflow_job_id |
get_runner_volume_analytics | Серии хранения, запуски задач, процент попаданий и тенденции. Необязательные параметры volume_id, start и end (ISO 8601); по умолчанию семь дней, максимум 90. | account_handle |
clear_runner_volume | Очистить сохраненное содержимое. Выполняющиеся задачи сохраняют свои приватные копии, но не могут их сохранить; последующие задачи начинаются с пустыми томами. | account_handle, volume_id |
Списки принимают параметры page и page_size (до 100). Инвентарь томов также принимает параметры name и repository (точные совпадения, объединяются через AND), sort_by (volume, repository, used_space, capacity, last_used) и sort_order (asc, desc). Неизвестные измерения и результаты попаданий остаются null. Статус кэша описывает, были ли сохранены изменения тома, а не успех задачи.
Вебхуки#
Инструменты вебхуков используют те же права только для администраторов, что и панель управления. Попытки доставки содержат данные запроса и ответа, записанные для конечной точки, но никогда не содержат секрет подписи конечной точки.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_webhook_endpoints | Список конечных точек вебхуков для аккаунта. | account_handle |
get_webhook_endpoint | Получить конечную точку вебхука. | account_handle, webhook_endpoint_id |
list_webhook_delivery_attempts | Список попыток доставки для конечной точки. | account_handle, webhook_endpoint_id |
get_webhook_delivery_attempt | Получить информацию о попытке доставки. | account_handle, webhook_endpoint_id, delivery_attempt_id |
Сборки Xcode#
Инструменты детализации сборок для Xcode, Gradle, Bazel, Mix и Cargo предоставляют существующую структуру custom_metadata: {tags, values}, включая данные об инфраструктуре, если они сообщаются. Значения остаются строками, а неизвестные ключи сохраняются. Например, tuist.cpu.available_processors описывает доступные во время выполнения логические процессоры, тогда как tuist.gradle.max_workers — это ограничение на количество рабочих процессов Gradle, а tuist.jvm.max_heap_bytes — ограничение кучи JVM, а не объем памяти хоста. Это ненадежные наблюдения клиента, а не проверенные идентификаторы раннеров. Отсутствующие наблюдения остаются отсутствующими; импортированные логи и старые клиенты могут не иметь метаданных инфраструктуры. Обновление метаданных ожидает согласованного обновления клиента/протокола.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_xcode_builds | Список запусков сборок Xcode для проекта. | account_handle, project_handle |
get_xcode_build | Получить подробную информацию о конкретном запуске сборки Xcode, включая временный URL-адрес для скачивания архива с исходным файлом .xcactivitylog. | build_run_id |
list_xcode_build_targets | Список целей сборки для конкретного запуска сборки Xcode. | build_run_id |
list_xcode_build_files | Список скомпилированных файлов для конкретного запуска сборки Xcode. | build_run_id |
list_xcode_build_steps | Список записанных шагов сборки с указанием времени и результатов, без текста логов. | build_run_id |
get_xcode_build_step | Получить один записанный шаг сборки, включая его лог и флаг усечения. | build_run_id, step_id |
list_xcode_build_issues | Список проблем сборки (предупреждения и ошибки) для конкретного запуска сборки. | build_run_id |
list_xcode_build_cache_tasks | Список кэшируемых задач (попадания/промахи кэша) для конкретного запуска сборки Xcode. | build_run_id |
list_xcode_build_cas_outputs | Список выводов хранилища с адресацией по содержимому для конкретного запуска сборки Xcode. | build_run_id |
list_xcode_build_steps по умолчанию возвращает страницы по 20 шагов (максимум 100 через page_size), с параметрами page и pagination_metadata для навигации. Используйте search для поиска по заголовкам, проектам или целям, либо фильтруйте по точному совпадению project, target, category (например, swiftCompilation) и status (success или failure). Сортируйте по duration_ms для отображения самых медленных сначала (по умолчанию) или по start_ms для хронологического порядка. ID шагов используются для разрешения ничьих и возвращаются в виде десятичных строк для сохранения полной 64-битной точности. ID привязаны к сборке и не должны сопоставляться между разными сборками.
Необязательные параметры start_ms и end_ms выбирают шаги, попадающие в диапазон времени в миллисекундах от начала сборки; конец диапазона исключается. Оба инструмента принимают UUID сборки или URL панели управления в качестве build_run_id. Передайте полученный id шага без изменений в качестве step_id для получения его лога. Логи хранят до 64 КиБ на шаг, при этом log_truncated указывает на усеченный вывод.
Шаги собираются по умолчанию при обработке сборок Xcode. Записанные данные шагов хранятся 90 дней. Ответ списка включает поле availability: available, если записанные шаги существуют, даже если фильтры ничего не находят; processing, если сборка еще обрабатывается и шагов пока нет; или unavailable, если шаги не были записаны или срок их хранения истек.
Те же операции доступны через HTTP API по адресам GET /api/projects/{account_handle}/{project_handle}/xcode/builds/{build_id}/steps и GET /api/projects/{account_handle}/{project_handle}/xcode/builds/{build_id}/steps/{step_id}, с теми же фильтрами и пагинацией. Для обоих требуется доступ на чтение к проекту сборки.
Сборки Gradle#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
get_gradle_integration_guide | Возвращает полную информацию об аутентификации, настройке проекта, плагине Gradle, политике кэширования и процессе проверки двумя сборками. Агенты должны вызывать этот метод перед редактированием существующего проекта Android или Gradle. | Нет |
list_gradle_builds | Список запусков сборок Gradle для проекта, включая пользовательские метаданные. Фильтрация по пользовательскому тегу с помощью необязательного параметра tag. | account_handle, project_handle |
get_gradle_build | Получить метаданные сборки и количество задач/попаданий кэша. | build_run_id |
list_gradle_build_tasks | Список результатов задач, идентификатора композитной сборки, возможности кэширования и статуса инкрементальной сборки. | build_run_id |
list_gradle_build_steps | Список задач с замерами времени, конфигурации и преобразований, с поиском, метаданными и фильтрами по пересекающимся временным интервалам. | build_run_id |
get_gradle_build_step | Просмотр метаданных записанного шага по непрозрачному ID; логи отдельных шагов недоступны. | build_run_id, step_id |
Списки шагов Gradle и Bazel по умолчанию возвращают 20 результатов (максимум 100), поддерживают search, точное совпадение project, target, category и status, фильтры по пересекающимся интервалам start_ms / end_ms (конец исключается) и сортировку по duration_ms или start_ms. Передавайте полученные ID без изменений; они привязаны к своей сборке. Списки содержат поля time_origin и coverage. Старые отчеты Gradle используют first_recorded_timestamp, так как время начала сборки не было загружено. Профили Bazel содержат все записанные интервалы с покрытием trace_profile и profile_start в качестве начала отсчета времени. Для старых сборок используются сохраненные сводки BEP. Исходные записи истекают через 90 дней. Детали Bazel включают очищенные логи действий, если они опубликованы; поле log для деталей Gradle равно null. Подсказка compare_builds использует это покрытие, чтобы отличать полные трассировки Bazel от сохраненных сводок, и направляет агентов к деталям шагов для получения результатов действий и логов перед проверкой общего вывода вызова.
ID шагов Bazel, возвращаемые из сохраненных сводок, остаются читаемыми, если полный профиль поступает в промежуток между получением списка и запросом шага. Индексированный профиль, данные шагов которого истекли, сообщает о недоступности. Списки шагов Gradle включают кэшированные и пропущенные операции с нулевой длительностью.
Вызовы Bazel#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
get_bazel_integration_guide | Возвращает информацию об аутентификации, настройке проекта, конфигурации Bazel и процессе верификации. | Нет |
list_bazel_invocations | Список завершенных вызовов протокола событий сборки Bazel с метриками сборки, ограниченной временной шкалой выполнения, диагностикой критического пути и коррелированными итогами удаленного кэша для проекта. | account_handle, project_handle |
get_bazel_invocation | Получить один завершенный вызов Bazel с метриками сборки, ограниченной временной шкалой выполнения, диагностикой критического пути и коррелированными итогами удаленного кэша. | account_handle, project_handle, invocation_id |
list_bazel_build_steps | Список записанных интервалов профиля Bazel с фильтрами и явным указанием покрытия. | account_handle, project_handle, invocation_id |
get_bazel_build_step | Просмотр записанного шага Bazel, его опубликованного результата действия и очищенного лога. | account_handle, project_handle, invocation_id, step_id |
list_bazel_invocation_logs | Список очищенных логов тестов, захваченных для вызова Bazel, в порядке выполнения. | account_handle, project_handle, invocation_id |
get_bazel_invocation_log | Получить один очищенный лог теста, захваченный для вызова Bazel. | account_handle, project_handle, invocation_id, invocation_log_id |
list_bazel_cache_events | Список сырых наблюдений удаленного кэша Bazel с указанием операции, конечной точки и времени наблюдения, с возможностью фильтрации по вызову, результату или операции. | account_handle, project_handle |
get_bazel_cache_event | Получить одно сырое наблюдение удаленного кэша Bazel. | account_handle, project_handle, cache_event_id |
Сборки Cargo#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_cargo_builds | Список сборок Cargo для проекта, от новых к старым. Фильтрация по git_branch, status, is_ci или command. Результаты выполнения тестов Cargo доступны через инструменты тестирования, а не через этот список сборок. | account_handle, project_handle |
get_cargo_build | Получить метаданные сборки, агрегированные счетчики кэша и до 500 записанных задач компилятора с диагностикой. compilations_truncated указывает на пропущенные задачи; диагностика охватывает только возвращенные задачи. | account_handle, project_handle, build_id |
Установите include_cache_inspection: true в get_cargo_build, чтобы получить проверенные решения задач и операции CAS, ограниченные 4 МБ. По умолчанию, а также при отсутствии или некорректности записей, cache_inspection равно null. Учитывайте флаг частичного захвата truncated; передачи не определяют локальное или удаленное происхождение каждого попадания в кэш задачи. HTTP-эндпоинт деталей принимает тот же параметр запроса.
Сборки Mix#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_mix_builds | Список сборок компиляции Mix (Elixir) для проекта, от новых к старым, включая пользовательские метаданные. Фильтрация по git_branch, status, is_ci или mix_env. | account_handle, project_handle |
get_mix_build | Получить метаданные сборки, количество диагностических сообщений и сводку кэша зависимостей. | account_handle, project_handle, build_id |
Трассировки сборок#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
get_build_trace | Получить ссылку для скачивания временной шкалы сборки Xcode, Gradle, Bazel или Mix в виде файла трассировки, который можно открыть в Perfetto. | account_handle, project_handle, build_id |
build_id — это ID запуска сборки (ID вызова для Bazel) или URL сборки в дашборде. Возвращаемый trace_url предоставляет JSON-файл Chrome Trace Event. Любой, у кого есть ссылка, может скачать трассировку этой сборки без других учетных данных до момента expires_at, который наступает через час после вызова. Агенты могут скачать её с помощью curl, передать вам для открытия в Perfetto или запросить через trace_processor Perfetto. Трассировка содержит записанные шаги, сгруппированные по параллельности, дорожку, охватывающую всю сборку, а также счетчики CPU и памяти, если сборка записывала метрики машины. Она содержит те же данные, что и инструменты шагов выше, но без логов. Дашборд предлагает тот же файл на вкладке Timeline каждой сборки.
Запуски Once#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_once_runs | Список запусков Once для проекта, от новых к старым. Фильтрация по kind (build, test или generic), status, is_ci или git_branch. Запуски, которые еще не завершены, имеют статус in_progress. | account_handle, project_handle |
get_once_run | Получить запуск с итоговыми данными по действиям, сводкой кэша и, для тестовых запусков, итоговыми данными по тестам. | account_handle, project_handle, run_id |
ID сборок Cargo, сборок Mix и запусков Once уникальны в пределах проекта. Те же данные для чтения доступны через HTTP API по адресам GET /api/projects/{account_handle}/{project_handle}/cargo/builds, .../mix/builds и .../once/runs, каждый из которых имеет эндпоинт деталей для одного ID.
Задачи, действия, модули и файлы#
Эти инструменты, работающие в контексте проекта, исследуют постоянные идентификаторы сборок across запусков. Начните с list_build_entities, затем передайте полученный стабильный id с тем же kind в get_build_entity или list_build_entity_history вместе с account_handle и project_handle. Идентификатор сборки или вызова не требуется.
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_build_entities | Список задач, модулей, действий или файлов одного типа, обнаруженных в сборках проекта. | account_handle, project_handle, kind |
get_build_entity | Получить одну сущность сборки с её нативным идентификатором и аналитикой за выбранный период. | account_handle, project_handle, kind, id |
list_build_entity_history | Список записанных выполнений, компиляций или событий кэша для одной сущности сборки, от новых к старым. | account_handle, project_handle, kind, id |
kind | Инструментарий | Списки истории |
|---|---|---|
bazel_actions | Действия Bazel | Выполнения действий, сообщённые через BEP |
gradle_tasks | Задачи Gradle | Выполнения задач |
xcode_modules | Модули Xcode | Компиляции и события кэша модулей |
once_actions | Действия Once | Выполнения |
mix_files | Скомпилированные файлы Mix | Компиляции |
mix_modules | Скомпилированные модули Mix | Компиляции |
cargo_crates | Крейты Cargo | Записанные вызовы rustc |
Эти инструменты внедряются постепенно и возвращают данные только для проектов, где они включены; для остальных проектов возвращается ошибка вместо пустого результата. Тип доступен только для проектов, использующих соответствующий инструментарий сборки. Инструменты принимают ограниченные фильтры start_at/end_at, environment (any, ci или local) и точный branch. list_build_entities принимает q; list_build_entity_history поддерживает непрозрачные курсоры after/before. Неизвестные наблюдения времени или кэша остаются недоступными, а не превращаются в нули или промахи. История ссылается на записанного родителя и нативное выполнение для детализации с использованием существующих инструментов запусков.
Метрики get_build_entity включают duration_samples — количество наблюдений с записанным временем: подлинные нулевые длительности учитываются, отсутствующее время — нет. Это количество может быть меньше количества наблюдений; недоступная статистика длительности остаётся null.
Длительности модулей Xcode получены из измеренных компиляций целей в логах сборки. Разрешения кэша модулей и цели без работы по компиляции не вносят вклад в выборки длительности. Наблюдения компиляции ссылается на сборку Xcode; события кэша — на команду генерации или кэша.
Действия Bazel идентифицируются по метке цели, мнемонике и настроенному первичному выводу, сохраняя раздельные действия и конфигурации различными без опоры на зависящие от ввода дайджесты кэша. История записывает выполнения, сообщённые через BEP, а не поиски в кэше или фазы трассировки. Полное покрытие выполнения требует --build_event_publish_all_actions; доставка артефактов выполняется по принципу best effort, поэтому отсутствующие наблюдения не являются доказательством того, что работа не выполнялась. Старые payloads Kura без стабильной идентичности или начала выполнения всё ещё принимаются, но не индексируются. Отсутствующие измерения времени окончания остаются недоступными, а подлинные нулевые длительности учитываются.
Длительности модулей Mix измеряют компиляцию содержащего файла, а не независимо измеренную работу модуля. Действия Once используют объявленные слоты target/capability/index, когда клиент сообщил сопоставления целей; одни лишь диагностические метки не являются стабильными идентификаторами. Существующие клиенты и инструменты уровня запуска поддерживаются без изменений.
Крейты Cargo группируются по точно записанному корню крейта, имени и типу. Изменения пути checkout могут разделять истории, а профили сборки, возможности и тройки целей не различаются. История измеряет вызовы rustc, а не работу по файлам или попадания в кэш; отсутствующие задания не устанавливают удаления или полную инвентаризацию рабочего пространства.
Чтения аналитики имеют ограниченное потребление памяти и времени выполнения. Если запрос превышает эти лимиты, инструмент возвращает ошибку вместо создания пустого результата.
Новые наблюдения индексируются после развертывания; эта функция не заполняет ретроспективно существующую телеметрию запусков. Метаданные идентичности хранятся дольше отдельных наблюдений в соответствии с политикой хранения данных.
Тесты#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_test_runs | Список запусков тестов для проекта. Поля query — это git_branch, scheme и status: field:"value" соответствует точно, field~"value" соответствует подстроке без учёта регистра, а ведущий - отрицает любой оператор. Например, -git_branch~"gh-readonly-queue" исключает ветки очереди слияния. Фильтры запроса, разделённые пробелами, и явные аргументы объединяются с семантикой AND. | account_handle, project_handle |
get_test_run | Получить подробные метрики для запуска теста, включая временные URL-адреса для скачивания его пакета результатов (.xcresult) и архива сессии. | test_run_id |
list_test_module_runs | Список запусков тестовых модулей для конкретного запуска теста. | test_run_id |
list_test_suite_runs | Список запусков тестовых наборов для конкретного запуска теста, с возможностью фильтрации по модулю. | test_run_id |
list_test_cases | Список тест-кейсов для проекта (поддерживает фильтры, такие как flaky). | account_handle, project_handle |
get_test_case | Получить подробные метрики для тест-кейса, включая уровень надёжности, уровень нестабильности и количество запусков. | test_case_id или identifier + account_handle + project_handle |
list_test_case_runs | Список запусков тест-кейсов с возможностью фильтрации по тест-кейсу или запуску теста. | account_handle, project_handle |
get_test_case_run | Получить подробную информацию об ошибках и повторениях для конкретного запуска тест-кейса. | test_case_run_id |
list_test_case_run_attachments | Список вложений для запуска тест-кейса. Каждое вложение содержит временный URL-адрес для скачивания. | test_case_run_id |
list_test_case_events | Список изменений состояния тест-кейса, таких как игнорирование сбоев или пропуск. | test_case_id |
update_test_case | Обновить состояние тест-кейса или классификацию нестабильности. Изменение может отправить событие на настроенные конечные точки вебхуков, включая внешние сервисы. | test_case_id или identifier + account_handle + project_handle |
list_xcode_test_targets | Список результатов целей выборочного тестирования для запуска теста. | test_run_id |
get_coverage | Получить покрытие кода проекта с его целями для конкретного коммита или последнего полного коммита ветки. Без git_commit_sha или branch считывается информация из ветки по умолчанию. | account_handle, project_handle |
list_coverage_files | Список файлов, измеренных покрытием кода коммита, с их построчным покрытием, для конкретного коммита или последнего полного коммита ветки. Поддерживает search, сортировку и пагинацию. | account_handle, project_handle |
get_coverage_file | Получить покрытие кода файла и его функций для конкретного коммита или последнего полного коммита ветки. Установите include_lines, чтобы получить количество выполнений для каждой строки. | account_handle, project_handle, path |
Инструменты покрытия кода доступны аккаунтам с включенным покрытием кода.
Бандлы#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_bundles | Список бандлов (бинарных файлов приложений) для проекта. С возможностью фильтрации по git_branch и tags (все теги должны совпадать точно). | account_handle, project_handle |
get_bundle | Получить подробную информацию о конкретном бандле, включая пользовательские теги. | bundle_id |
get_bundle_artifact_tree | Получить полное дерево артефактов для бандла в виде плоского списка, отсортированного по пути. | bundle_id |
list_bundles принимает tags: ["paid", "production"] для различения вариантов сборки или окружений. Теги — это метки с учётом регистра, содержащие буквы, цифры, дефисы или знаки подчёркивания, не более 10 тегов и 50 символов на тег. Результаты списков и деталей включают custom_metadata.tags. Счётчики пагинации и фильтры по веткам применяются к результатам с тегами; отсутствие tags сохраняет поведение без фильтрации. Неверные фильтры тегов возвращают ошибку вместо расширения запроса.
Генерации#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_generations | Список запусков генераций для проекта. | account_handle, project_handle |
get_generation | Получить подробную информацию о конкретном запуске генерации. | generation_id |
Запуски кэша#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_cache_runs | Список запусков кэша для проекта. | account_handle, project_handle |
get_cache_run | Получить подробную информацию о конкретном запуске кэша. | cache_run_id |
list_xcode_module_cache_targets | Список целей кэша модулей для генерации или запуска кэша, показывающий статус попаданий/промахов кэша для каждой цели и хеши диагностических компонентов, включая дополнительные входные данные для хеширования. | run_id |
Превью#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_previews | Список доступных для обмена превью приложений для проекта. | account_handle, project_handle |
get_preview | Получить превью и временные URL-адреса для скачивания его сборок. | preview_id |
get_latest_preview | Найти последнее превью для работающего бинарного файла приложения. | account_handle, project_handle, binary_id, build_version |
Автоматизации#
| Инструмент | Описание | Обязательные параметры |
|---|---|---|
list_automation_alerts | Список оповещений автоматизации для проекта. | account_handle, project_handle |
get_automation_alert | Получить оповещение автоматизации. | alert_id |
list_automation_alert_revisions | Список истории изменений для оповещения автоматизации. Учетные данные действий скрыты. | alert_id |
list_project_notification_alerts | Список правил оповещений уведомлений проекта. Требуются те же права администратора, что и на странице настроек дашборда. Адреса вебхуков скрыты. | account_handle, project_handle |
События#
Клиенты, использующие жизненный цикл Model Context Protocol без сохранения состояния 2026-07-28, могут вызывать events/list для обнаружения событий и их схем полезной нагрузки:
| Событие | Когда отправляется | Фильтр подписки |
|---|---|---|
test_case.marked_flaky | Тест-кейс меняется с нестабильного на стабильный или наоборот. | account_handle, project_handle |
build.failed | Локальная сборка или сборка в системе непрерывной интеграции Xcode, Gradle или Bazel завершается с ошибкой. | account_handle, project_handle |
test_run.failed | Локальный запуск тестов или запуск тестов в системе непрерывной интеграции завершается с ошибкой, включая объединенный шардированный запуск или заброшенный запуск. | account_handle, project_handle |
ci_job.failed | Задача раннера Tuist завершается с ошибкой. | account_handle |
Для подписки клиент вызывает events/subscribe с именем события, хэндлами, указанными выше в arguments, и доставкой webhook, содержащей URL обратного вызова https:// и секрет подписи whsec_. События проекта требуют членства в аккаунте и доступа на чтение к соответствующим данным тестов или сборок; события задач раннера требуют членства в аккаунте и доступа на чтение к раннеру. Заявленные токены доступа auth.md, заявленные токены аккаунта и гранты авторизации браузера могут создавать подписки; доставка останавливается, когда связанные учетные данные больше не активны. Каждый пользователь может иметь до 25 активных подписок. Tuist отправляет проверочный запрос на обратный вызов перед сохранением подписки. Обратный вызов должен вернуть объект, содержащий то же значение challenge. Подписка действует семь дней по умолчанию, может быть обновлена путем повторной подписки и прекращает доставку при удалении доступа или учетных данных пользователя. Необязательный параметр ttlMs ограничен диапазоном от одного часа до 30 дней. Tuist повторяет попытки вызова тайм-аута и отменяет подписку после как минимум трех последовательных тайм-аутов в течение пяти минут; подпишитесь снова после восстановления обратного вызова.
При возникновении события Tuist отправляет его идентификатор ресурса и URL дашборда на обратный вызов. Ошибки сборки и запуска тестов также включают is_ci и git_branch, поэтому клиенты могут игнорировать локальные ошибки или фильтровать по ветке. События сборки включают build_system; события задач раннера включают как workflow_job_id, так и workflow_run_id. Запрос включает идентификатор подписки и заголовки подписи Standard Webhooks, чтобы клиент мог проверить его происхождение. Tuist повторяет неудачные доставки, поэтому клиентам следует использовать стабильный eventId для отбрасывания дубликатов. Полезная нагрузка не содержит имен тестов, логов и сообщений об ошибках; клиент может получить эти детали через инструменты выше и решить, уведомлять ли команду или начать отладку. Клиенты могут остановить доставку с помощью events/unsubscribe.
Подсказки#
| Подсказка | Описание |
|---|---|
fix_flaky_test | Направляет вас через процесс исправления нестабильного теста, анализируя шаблоны сбоев, выявляя первопричину и применяя целенаправленное исправление. |
compare_builds | Направляет вас через процесс сравнения сборок для выявления регрессий производительности, изменений кэша и проблем сборки. Использует нативные инструменты для проектов Xcode, Gradle, Bazel и Cargo. Сравнения Cargo сохраняют частичное покрытие компилятора и различают оценочную работу компилятора от сэкономленного времени. |
compare_test_runs | Направляет вас через процесс сравнения двух запусков тестов для выявления регрессий, новых сбоев и нестабильных тестов. |
compare_bundles | Направляет вас через процесс сравнения двух бандлов для выявления изменений размера по всему дереву артефактов. |
compare_test_case | Направляет вас через процесс сравнения поведения тест-кейса в двух ветках или временных периодах. |
compare_generations | Направляет вас через процесс сравнения двух запусков генераций для выявления регрессий производительности и изменений кэша модулей. |
compare_cache_runs | Направляет вас через процесс сравнения двух запусков кэша для выявления изменений эффективности кэша и регрессий на уровне целей. |
integrate_gradle_project | Направляет вас через процесс интеграции Tuist в существующий проект Gradle. Включает отдельную аутентификацию инструмента и Gradle, обнаружение аккаунта, создание проекта, политику удаленного кэша, аналитику сборки и проверку считыванием. |
integrate_bazel_project | Направляет вас через процесс создания или выбора проекта Bazel, аутентификации командной строки, настройки удаленного кэша и аналитики сборки, а также проверки интеграции через данные сборки Tuist. |
integrate_xcode_project | Направляет вас через процесс интеграции Tuist в существующий проект Xcode. Поддерживает кэш Xcode, аналитику сборки, аналитику тестов и шардирование тестов. |
ask_tuist | Отвечает на вопрос о Tuist, используя общедоступные материалы для контекста и сфокусированные доказательства реализации и тестирования как источник истины для текущего поведения. Требуется question и ссылается на доказательства, привязанные к ревизии. |
Подсказки с данными проекта принимают account_handle и project_handle для ограничения исследования конкретным проектом. Подсказки сравнения также принимают аргументы base и head для указания двух сравниваемых элементов (по ID, URL дашборда или имени ветки). ask_tuist принимает question вместо параметров проекта. integrate_gradle_project также принимает features, список интеграций Gradle через запятую: remote_cache, build_insights, test_insights, flaky_tests и test_sharding. integrate_bazel_project принимает необязательный server_url для самостоятельного размещения или локальных установок. integrate_xcode_project принимает features с xcode_cache, build_insights, test_insights и test_sharding.
Возможности подсказки интеграции Gradle#
Подсказка integrate_gradle_project и инструмент get_gradle_integration_guide документируют полный рабочий процесс настройки. Инструмент также упоминается в инструкциях инициализации сервера, что делает его обнаруживаемым агентами, которые не перечисляют подсказки.
| Возможность | Что настраивает агент |
|---|---|
remote_cache | Включает кэш сборки Gradle, настраивает политику загрузки удаленного кэша Tuist и рекомендует загружать только с раннеров непрерывной интеграции с локальным доступом только для чтения. |
build_insights | Применяет плагин Tuist Gradle и при необходимости настраивает поведение загрузки аналитики сборки. |
test_insights | Применяет плагин Tuist Gradle, чтобы результаты задачи Gradle Test автоматически загружались. |
flaky_tests | Руководит настройкой обнаружения нестабильных тестов, опционального использования плагина Gradle Test Retry и конфигурации карантина тестов. |
test_sharding | Добавляет рабочий процесс непрерывной интеграции для tuistPrepareTestShards, генерации матрицы шардов и выполнения тестов на основе TUIST_SHARD_INDEX. |
Когда features пропущен, подсказка просит агента уточнить, какие интеграции хочет пользователь, или определить минимально полезный набор из запроса перед редактированием проекта Gradle.
Возможности подсказки интеграции Xcode#
Подсказка integrate_xcode_project документирует все интеграции с Xcode, которые поддерживает Tuist:
| Возможность | Что настраивает агент |
|---|---|
xcode_cache | Настраивает tuist setup cache, параметры кэша сгенерированного проекта, ручные настройки сборки кэша Xcode и политику загрузки, ограниченную раннерами непрерывной интеграции. |
build_insights | Настраивает tuist inspect build, tuist xcodebuild, -resultBundlePath и опциональные метрики машины через tuist setup insights. |
test_insights | Настраивает tuist inspect test, пост-действия тестирования схем и генерацию бандлов результатов для запусков тестов в непрерывной интеграции. |
test_sharding | Добавляет рабочий процесс планирования шардов для Xcode или сгенерированного проекта и выполнения шардов с TUIST_SHARD_INDEX. |
Если features не указан, подсказка просит агента уточнить, какие интеграции нужны пользователю, или вывести минимально полезный набор из запроса перед редактированием проекта Xcode.