Запуск команд
cli запускает установленный инструмент, например jq или CLI модели.
Параметры
| Параметр | Назначение | По умолчанию |
|---|---|---|
command | Список аргументов команды | Обязательно |
stdin / stdin_json / stdin_file | Один способ передать вход | Не задан |
cwd | Рабочий каталог процесса | Каталог исполнителя |
max_output_bytes | Максимум stdout + stderr одной попытки | 8388608 |
env | Изменения окружения; null удаляет переменную | {} |
parse | text, raw, json | text |
json_mode | strict или extract, для JSON | strict |
timeout_seconds | Лимит всех попыток и пауз | 300 |
retry | max_attempts, when_stderr_matches, delay_seconds=0, backoff=1 | Выключен |
required_secrets | Требуемые секреты | [] |
Команда передаётся аргументами, не shell-строкой. Секреты передаются явно через env/stdin.
Пример
- id: active
block: cli
params:
command: [jq, '-c', '{{items: [.[] | select(.active == true)]}}']
stdin_json: "{inputs.records}"
parse: json
timeout_seconds: 30Команда использует установленный jq; результат читается через {active.json.items}.
Результат
{"text": "stdout", "json": {"answer": 42}, "exit_code": 0}raw сохраняет текст буквально, text убирает внешние пробелы и кодовую ограду. В режиме json исходный вывод остаётся в text, разобранное значение — в json.
Изменение: сейчас JSON-поля смешиваются с результатом блока. Предлагается отдельное поле: {generate.json.answer}.
Поведение
Ненулевой код, превышение времени или невалидный JSON завершают шаг. extract разрешает извлечение JSON из обрамляющего текста; strict требует только JSON. Повторы задаются явно, максимум 10 попыток.
Использование
Оркестрация остаётся в workflow: вызов модели → проверка → исправление → согласование. Собственный скрипт, который скрыто выполняет всю цепочку, эту модель нарушает. CLI работает с правами процесса и не является изоляцией чужого кода.
Начальный охват
Базового набора достаточно для вызова существующих инструментов: аргументы, три способа ввода, окружение, текстовый или JSON-результат, таймаут и явные повторы. Нужность каждого следующего параметра проверяет разработчик на конкретном сценарии. Новые возможности добавляем совместимо; удаление и смена смысла требуют миграции.
Параметры операций
Используются argv-список, взаимно исключающие stdin/stdin_json/stdin_file, окружение и явные повторы: они нужны текущим сценариям. cwd нужен инструментам с рабочим каталогом. max_output_bytes ограничивает накопление вывода во время чтения процесса; обрезанный JSON не считается успешным результатом. В текущем исполнителе такого лимита ещё нет.
parse и json_mode имеют разные обязанности: первое выбирает формат, второе — строгость разбора JSON. Не объединяем их в неявные эвристики. JSON в отдельном поле поддерживает объекты, массивы и скаляры без конфликта с text/exit_code. stderr остаётся диагностикой ошибки, а не новым обязательным полем результата.
Плагины и установка
В составе блока: Процессы, argv, stdin, env, cwd, файлы, stdout/stderr и разбор результата.
| Плагин | Возможности |
|---|---|
| — | Отдельных плагинов для CLI-инструментов нет |
jq, FFmpeg и CLI моделей поставляются окружением приложения. Пакет блока не устанавливает эти программы.