flowctl — командная строка агента

flowctl — маленькая утилита без зависимостей, которая идёт в комплекте со скиллом. Она умеет проверять флоу до сохранения, выкатывать изменения и читать логи прогонов — то, что агент делает чаще всего, — одним вызовом вместо ручных GraphQL-запросов.

Установка и окружение

Бинарники лежат в скилле: https://dynapi.ru/cms/agent-skill/cli/. Скачайте файл под свою систему — и это всё, утилите не нужна установка:

Система Файл
Linux flowctl-linux-amd64
Windows flowctl-windows-amd64.exe
macOS (Apple Silicon) flowctl-darwin-arm64
macOS (Intel) flowctl-darwin-amd64

Адрес и ключ задаются переменными окружения один раз за сессию.

Linux и macOS:

export DYNAPI_URL="https://dynapi.ru/cms/graphql"
export DYNAPI_APIKEY="dca_…"

Windows (PowerShell):

$env:DYNAPI_URL = "https://dynapi.ru/cms/graphql"
$env:DYNAPI_APIKEY = "dca_…"

Каждая сетевая команда подхватывает их сама; флаги --url и --key переопределяют окружение, если нужно работать с другим проектом.

Если какая-то команда «не существует» — у вас старый бинарник: с каждым релизом набор команд растёт. flowctl version покажет сборку, свежий файл лежит по тому же адресу (эндпоинт не меняется, меняется только утилита).

Команды

Проверка

Команда Что делает
flowctl validate <flow.json> Локально: разбор документа флоу, инварианты графа, синтаксис Liquid в каждом узле. Ничего не отправляет на сервер.
flowctl dryrun <flow.json> Сухой прогон несохранённого флоу на сервере (dryRunFlow): печать шагов, сработавших условий и ошибок.
flowctl runs <slug> Здоровье живого флоу текстом: сколько раз сработал каждый узел, средняя длительность, последняя ошибка.

Публикация

Команда Что делает
flowctl save <flow.json> Сохранить флоу черновиком. Никогда не публикует.
flowctl publish <slug> Выкатить черновик флоу на основной адрес.
flowctl apply <export.json> Полный импорт экспорта: ручка + флоу + шаблоны + маршруты. --publish — сразу опубликовать.
flowctl flow list / flow get-doc <slug> Список сценариев; живой документ флоу в формате JSON (--out — в файл) — честный ответ на вопрос «что этот сценарий делает».
flowctl site publish Полная публикация сайта: черновики шаблонов, статики и библиотеки запросов, слияние маршрутов и запросов (надгробия учитываются, свежие живые правки сохраняются), карта сайта. Печатает, что сдвинулось.

Проверка после сохранения — на превью-хосте (https://preview-<поддомен>.dynapi.ru): он всегда исполняет черновики, посетители основного адреса их не видят.

Материал сайта

Команда Что делает
flowctl files push <путь…> Загрузить шаблоны и статику с диска (каталог — рекурсивно). --publish — сразу опубликовать.
flowctl template list / static list Инвентарь файлов сайта: каждый путь и его состояние — live (опубликован), draft (новый черновик), live+draft (есть неопубликованная правка).
flowctl files delete <путь> Удалить файл из обеих копий — сначала черновик (именно он воскресил бы файл при следующей полной публикации), затем живую. --publish — полная публикация следом, чтобы реплики сбросили кэш.
flowctl route <list|save|publish|delete> Маршруты: список, черновик, публикация, удаление.
flowctl query <list|save|publish|delete> Библиотека запросов. Удаление — через «надгробие» в черновике (query delete): удалённая без него живая запись воскресает при следующей полной публикации.
flowctl subdomain [имя] [--set] Текущий поддомен и адреса; проверка занятости; --set — занять.

Контент

Команда Что делает
flowctl entity <types|schema|items|get|create|update|delete|delete-type|count> Типы контента и записи без ручного GraphQL: список типов, схема, страницы записей, создание/правка/удаление.
flowctl entity count <тип> Честное число записей (с --where/--search) — полезно, когда постраничный лист упирается в лимит 100 строк.
flowctl entity delete-type <тип> Снести тип и все его записи (каскад в одной транзакции, необратимо). Сначала печатает, что именно исчезнет, и спрашивает подтверждение; --yes — для скриптов.
flowctl media push <файл…> Загрузить файлы в медиатеку; печатает id и url каждого.
flowctl media refs <id> Где файл используется — проверка перед удалением.
flowctl secret <set|list|delete> Секреты проекта для secret://-ссылок во флоу. Значение подаётся на stdin, прочитать сохранённое нельзя.

Захват id записи: flowctl entity create|update … -quiet печатает только id — его и подставляйте в переменную. Декорированная строка вида ✓ create … id=… — проза для человека: в переменной она ломает ссылки на записи. Если id сразу идёт в поле другой записи (например, seo у страницы), перечитайте её после обновления и убедитесь, что ссылка встала.

Большие объёмы — с паузами. У платформы есть лимиты на менеджмент-операции в минуту: установка уровня визарда или массовая загрузка файлов формально легальны поштучно, но упираются в лимит на хвосте — обычно на финальной публикации. Делите большие работы на партии с паузами, после 429 выжидайте retry_after.

Пример сессии

# окружение
export DYNAPI_URL="https://dynapi.ru/cms/graphql"
export DYNAPI_APIKEY="dca_…"

# проверить флоу локально и на сервере
flowctl validate katalog.json
flowctl dryrun katalog.json

# сохранить черновиком, проверить на превью, опубликовать
flowctl save katalog.json --slug katalog
curl -s https://preview-<поддомен>.dynapi.ru/katalog
flowctl publish katalog

# убедиться, что живой флоу здоров, а файлы сайта в порядке
flowctl runs katalog
flowctl route list
flowctl template list

Назад: Скилл dynapi-site-dev