Проект: задания, мета-язык, цепочка сборки
Узел «Проект» связывает описание, код, сборку и деплой в один контур. Команды выполняет агент на вашей машине, холст хранит состояние и историю.
Узел «Проект»
«Компоненты → ⚑ Проект» кладёт карточку с именем, bundle_name, версией, репозиторием, агентом, папкой и путём кода, целями сборки по платформам и командой деплоя. В инспекторе версия поднимается на patch, minor или major и записывается в pubspec.yaml через агента. «⚙ Задания сборки» создают по узлу «⚙ Задание» на каждую цель, в командах доступны подстановки ${version}, ${bundleName}, ${name} и ${metaOut}. «▣ Рамка проекта» собирает карточку и задания в группу, отсюда же открываются схема кода и задачи. Профиль рабочего места «Проект» настраивает палитру под эту работу.
Задания у агента
«Поток → ⚙ Задание»: агент в форме agent:<имя>, команда, например docker compose up -d, bash tools/dist/build_linux.sh или ./deploy.sh, и для служб команда остановки. Кнопка ▶ над карточкой запускает команду у агента, он проверяет свой allow-список в agent.json. Лог передаётся в узел порциями и виден в инспекторе, состояние и код выхода приходят по окончании. ■ останавливает: командой остановки, если она задана, и сигналом процессу.
"exec": {
"allow": ["docker compose *", "bash tools/dist/*", "make *"],
"cwd": "/srv/app",
"timeoutSeconds": 120
}
Права такие же, как у действия agent-exec: право писать в комнате и способность cap.shell.
Мета-язык проекта
У проекта есть поле «мета-файл»: текст на языке, описанном в f2plw, например схема базы, описание API или собственный язык. Путь указывается внутри папки агента или в форме node:<ключ> для узла «Код на языке» с холста. Несколько файлов перечисляются через ; или с новой строки, язык каждого определяется по расширению, если не задан явно.
«⚙ Сгенерировать» читает файлы у агента, передаёт сайдкару языков, и выходы правил генерации ложатся деревом в папку агента, указанную в поле «выходы в», по умолчанию gen/. Проект без агента берёт мета-описание из узлов холста, а выходы кладёт в папку песочницы воркспейса на сервере. Дальше идут обычные задания сборки, в командах доступен ${metaOut}.
Цепочка сборки
«⚡ Цепочка сборки» в инспекторе проекта ставит рядом узел «Старт», шаг «Генерация» и по шагу «Сборка» на каждое задание, связанные exec-рёбрами по порядку. Прогон выполняет сервер: по расписанию, по webhook или кнопкой «запустить сейчас». Генерация кладёт выходы агенту, затем задания идут по порядку, шаг ждёт конца задания до двадцати минут и останавливает цепочку при ненулевом коде выхода. Деплой не начнётся после упавшей сборки. Лог и итог приходят в узлы заданий так же, как при ручном запуске. Повторное нажатие перестраивает цепочку, выпавшие шаги убираются.
Права
Генерация требует способности cap.file, запуск заданий требует cap.shell. Ручной ▶ на шаге цепочки отвечает, что шаг выполняется сервером.