echolot flow
Перечисляйте, запускайте и создавайте сценарии рабочего пространства из терминала и обслуживайте их расписания и вебхуки.
echolot flow запускает сценарии без приложения: один раз из терминала или задания CI либо как
службу, которая запускает сценарии по расписанию, когда подходит время, и отвечает на вебхуки.
| Подкоманда | Что делает |
|---|---|
echolot flow list | Перечисляет сценарии рабочего пространства с их входными данными и проблемами. |
echolot flow run | Запускает сценарий, печатает каждый блок по мере его завершения, затем результат сценария. |
echolot flow new | Создаёт сценарий — пустой или из шаблона; без имени перечисляет шаблоны. |
echolot flow serve | Запускает сценарии по расписанию, когда подходит время, и отвечает на вебхуки, пока его не остановят. |
Каждая подкоманда принимает рабочее пространство через -w или --workspace.
echolot flow list
echolot flow list --workspace <workspace> [--json]echolot flow list -w Alpenglow.echolotmorning-stock-check Morning stock check
order-status-webhook Order status on webhook
place-test-order Place a test order MCP tool place_test_orderВ каждой строке — slug сценария (имя его файла в flows/ без .flow.toml) и его имя, затем, если они есть, входные
данные в круглых скобках (необязательные — в квадратных), инструмент MCP, которым сценарий предлагается, и число
проблем. --json печатает каждый сценарий с его slug, name, description, inputs, blockCount, errors,
warnings и его schedule или webhook.
echolot flow run
echolot flow run <flow> --workspace <workspace> [--env <env>] [--input <name=value> ...] [--json] [--no-input]<flow> — это slug или имя сценария.
echolot flow run morning-stock-check -w Alpenglow.echolot✓ start Start 0 ms
✓ list List products 148 ms
✓ low Running low? 4 ms
notification: Restock Bern — A tent is under five in Bern.
✓ notify Restock 0 ms
Morning stock check: passed in 152 ms- Каждый блок печатает строку, когда завершается:
✓или✗, его ID, его заголовок и его время, а при ошибке — и саму ошибку. То, что пишут блоки Log, и результат каждого теста идут следом отдельными строками. - Уведомления идут в стандартный поток ошибок.
- Результат сценария печатается в конце как JSON, а за ним в стандартном потоке ошибок — сводка.
--input name=valueзадаёт входное значение как текст, преобразованный в тип входа. Указывайте по разу для каждого входа.- Когда сценарию нужен человек (вход без значения, блок Одобрить), Echolot спрашивает в терминале.
--no-inputне спрашивает никогда: сценарий в этом месте завершается ошибкой — это именно то, что нужно в CI. --jsonпечатает всю запись о прогоне как JSON вместо строк хода выполнения.
echolot flow run "Place a test order" -w Alpenglow.echolot --env staging --no-input| Параметр | Значение |
|---|---|
-w, --workspace <folder> | Папка рабочего пространства. Обязательно. |
--env <env> | Окружение, которое используют запросы сценария: имя его файла без .toml или его имя. |
--input <name=value> | Входное значение; текст преобразуется в тип входа. Можно повторять. |
--json | Напечатать запись о прогоне как JSON вместо хода выполнения. |
--no-input | Никогда не спрашивать: сценарий, которому нужен человек, на этом месте завершается ошибкой. |
Прогон завершается ошибкой, с кодом 1, когда сценарий или один из его тестов не проходит.
echolot flow new
echolot flow new [<name>] [--workspace <workspace>] [--template <template>]Без имени команда перечисляет шаблоны:
device-sign-in OAuth device sign-in: shows the code and link (with a QR code), waits until the person approves, saves the tokens to the Keychain.
refresh-token Trades the refresh token for a new access token and saves both to the Keychain; says so when it fails.
paginate-and-export Fetches a number of pages, gathers their items into one list and writes it to a JSON file in the workspace.
smoke-monitor Every hour, checks that a request answers 200 quickly; a notification when it does not.
seed-and-clean-up Creates a few records, leaves room for what needs them, then deletes each one again.С именем она записывает новый файл сценария:
echolot flow new "Export tents" --template paginate-and-export -w Alpenglow.echolotCreated flows/export-tents.flow.toml.Шаблоны оставляют выбор запросов вам — в приложении или в файле сценария; какие именно, сказано в заметке на холсте. См. шаблоны.
| Параметр | Значение |
|---|---|
-w, --workspace <folder> | Папка рабочего пространства. |
--template <template> | Шаблон, с которого начать: device-sign-in, refresh-token, paginate-and-export, smoke-monitor или seed-and-clean-up. Без него сценарий пустой. |
echolot flow serve
echolot flow serve --workspace <workspace> [--env <env>] [--port <port>] [--share] [--token <token>]Запускает каждый сценарий с расписанием, когда подходит его время, и отвечает на вебхуки сценариев, у которых они есть, пока вы не остановите его клавишами ⌃C. Запустите его на сервере или в контейнере, чтобы автоматизации рабочего пространства продолжали работать без приложения.
echolot flow serve -w Alpenglow.echolot --port 4100Serving Alpenglow (Ctrl-C stops it)
schedule Morning stock check: 0 6 * * *
webhook POST http://127.0.0.1:4100/order-status (Order status on webhook)
token 3f9a…Каждый запуск печатает строку со временем, сценарием, тем, чем он закончился, и сколько длился.
Вебхуки. Вызывающий отправляет метод и путь вебхука сценария, а токен — как Authorization: Bearer <token>,
заголовок X-Echolot-Token или ?token= в URL. Входные данные сценария берутся из запроса и из тела JSON; вход с
именем body получает всё тело. Ответ — результат сценария в виде JSON, 500 с ошибкой, если сценарий завершился
ошибкой, 401 без правильного токена и 404 со списком существующих путей для пути, которого нет ни у одного
сценария.
curl -X POST http://127.0.0.1:4100/order-status \
-H "Authorization: Bearer $ECHOLOT_WEBHOOK_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"orderId": "ord_7Hk2Lw"}'Токен — это --token, иначе ECHOLOT_WEBHOOK_TOKEN, иначе новый, который печатает Echolot. Запуск по вебхуку может
длиться до двух минут; тело больше 8 МБ отклоняется целиком.
| Параметр | Значение |
|---|---|
-w, --workspace <folder> | Папка рабочего пространства. Обязательно. |
--env <env> | Окружение, которое используют запросы сценариев. |
--port <port> | Порт вебхуков; 0 выбирает свободный. По умолчанию 4100. |
--share | Отвечать на вебхуки на всех сетевых интерфейсах, а не только на этой машине: для контейнеров. |
--token <token> | Токен вебхуков. По умолчанию — ECHOLOT_WEBHOOK_TOKEN, иначе новый, он печатается. |
О расписаниях и вебхуках в приложении см. запуск сценариев и триггеры.
Коды выхода
| Код | Когда |
|---|---|
0 | run: сценарий прошёл со всеми тестами. list, new: готово. |
1 | run: сценарий завершился ошибкой или тест не прошёл. |
64 | Неверный параметр, сценарий или окружение, которых нет, или --input, не имеющий вид name=value. |