Открытое бета-тестирование: все тарифы со скидкой 100% на время тестирования. Нашли изъян или есть идея — напишите нам.

Проект: задания, мета-язык, цепочка сборки

Узел «Проект» связывает описание, код, сборку и деплой в один контур. Команды выполняет агент на вашей машине, холст хранит состояние и историю.

Узел «Проект»

«Компоненты → ⚑ Проект» кладёт карточку с именем, 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. Ручной ▶ на шаге цепочки отвечает, что шаг выполняется сервером.

← Код на холсте: схема, редактор, LSP