ENGitHubУстановить

Сборка и публикация eve

Исходники eve лежат в eve/: копия vercel/eve на коммите eb5949a622801b35a2a6f78bb58d9eef27273cac (eve 0.51.1). В ней пакет eve, зависимость catalog, документация пакета и входы сборки. Правки Ивы — обычные коммиты в этом каталоге; их держат тесты границы Ивы. Переход на новый коммит upstream — отдельное решение по ADR-0023.

Правьте eve/packages/eve/src/, прогоняйте затронутые тесты upstream и тесты границы Ивы, затем коммитьте исходники. Мейнтейнер использует Node ≥24 и pnpm 11.25.0. Для нового архива задайте свежий номер 0.51.1-iva.N в scripts/build-eve.sh и scripts/eve-release.sh. Пользователь получает готовый пакет eve и собирает только агента Ивы.

Из чистого дерева:

bash scripts/eve-release.sh

Команда вызывает scripts/build-eve.sh, сохраняет архив в игнорируемый .eve-out/release/, считает SHA-512 SRI и записывает URL, версию и integrity в package.json и package-lock.json, а версию и хеши исходников и пакета — в отслеживаемый eve.lock.json вне eve/. Повторный запуск использует тот же архив, сверив хеши исходников и пакета. Новым исходникам нужен новый номер N. Для сравнения сборок: bash scripts/build-eve.sh <пустой-каталог>.

Закоммитьте три файла зависимости локально, затем выполните:

bash scripts/eve-release.sh --publish

Команда проверяет чистое закоммиченное дерево и подготовленный архив, создаёт и отправляет только метку eve-0.51.1-iva.N, создаёт выпуск GitHub и загружает архив, скачивает его по итоговому URL со сверкой SHA-512 SRI, затем выполняет npm ci во временном чистом дереве с пустым кэшем. Первый сбой останавливает команду. Финальное сообщение разрешает лиду отправить beta; отправка остаётся отдельным действием после обязательной приёмки. Путь к архиву можно передать последним аргументом в обоих режимах.

Опубликованные метки eve-*, имена вложений и байты архивов постоянны. Исправление получает новый N: старые версии Ивы используют прежние URL. Архивы хранятся вне git.

В node_modules/eve/BUILD.json лежат коммит upstream, версии пакета и инструментов, sourceTreeHash и packedTreeHash. Тест scripts/eve-copy.test.ts сверяет исходники и установленный пакет с eve.lock.json, затем метаданные BUILD и lockfile. Из прав файла хешируется только признак исполнимости: umask сохраняет хеш. Сборочный .vendor-stamp.json исключён из хеша пакета; его отпечаток использует относительные пути, поэтому байты архива совпадают при сборке в разных каталогах.

Apache-2.0 и NOTICE с перечнем изменений Ивы сохранены в исходниках и включены в архив.

Исходный Markdown ↗