Skip to content

chore: prepare the repo for agents and reliable builds - #1

Merged
alexstep merged 1 commit into
mainfrom
cursor/agent-ready-setup-591d
Oct 7, 2026
Merged

alexstep merged 1 commit into
mainfrom
cursor/agent-ready-setup-591d

Conversation

@alexstep

@alexstep alexstep commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Что сделано

Репозиторий подготовлен к работе облачных агентов и к более жёсткой проверке сборки. Версия пакета не менялась (0.1.5), в npm и crates.io ничего не публиковалось, в main пуша не было.

  • AGENTS.md: архитектура (Rust-крейт, N-API, JS-обёртка), сборка через cargo и napi build, Rust/Node/Bun тесты, фикстуры, запрет ломать публичный API и коммитить *.node.
  • .cursor/environment.json и .cursor/install.sh: Rust stable, Node.js ≥ 22 (LTS, если его ещё нет), Bun в /usr/local/bin, bun install --frozen-lockfile и первичная napi-сборка. Скрипт прогнан дважды на этой машине.
  • Фикстуры и тесты на фактически поддерживаемые форматы: PDF, DOCX/DOCM, XLSX/XLS/ODS, PPTX/PPTM, ODT, RTF, EPUB, FB2, ICS, VCF, JSON/JSONL, CSV/TSV, HTML/XML, текст, плюс пустые и битые файлы и юникод. JS-набор на node:test гоняется и под Node, и под Bun. Rust-тесты читают те же фикстуры.
  • CI: cargo fmt --check, clippy -D warnings, cargo test, сборка и тесты под Bun и Node. Матрица prebuild: linux-x64-gnu, linux-arm64-gnu, linux-x64-musl, darwin-x64, darwin-arm64, win32-x64 (по образцу napi-rs). Собранный linux-x64-gnu артефакт дополнительно прогоняется тестами Node и Bun.
  • Публикация в npm остаётся отдельным job в .github/workflows/release.yml и теперь запускается только по тегу v*. Секрет в репозитории не хранится. Нужен GitHub Actions secret NPM_TOKEN: npm automation или granular token с правом публиковать @alexstep/doc-extract и платформенные пакеты @alexstep/doc-extract-*. Job прокидывает его в NPM_TOKEN и NODE_AUTH_TOKEN.
  • scripts/bench.mjs и короткий раздел Benchmark в README. cargo fmt приведён к rustfmt.toml (tab_spaces = 2), плюс мелкие правки clippy без смены поведения.

Открытых issues через gh не нашлось.

Что реально прошло

На этой машине (Rust 1.99.0, Node 22.14.0, Bun 1.4.2):

  • cargo fmt --all -- --check
  • cargo clippy --all-targets -- -D warnings
  • cargo test — 26 тестов
  • bun install --frozen-lockfile и bun run build (napi build --platform --release) — doc-extract.linux-x64-gnu.node
  • bun test — вся JS-сюита
  • node --test __tests__/formats.test.mjs — 57 тестов
  • bun test __tests__/formats.test.mjs — те же 57
  • node scripts/bench.mjs 5
  • .cursor/install.sh дважды подряд (второй прогон без переустановки пакетов, release-сборка кэшируется)

Что не проверялось

  • GitHub Actions на macOS, Windows, linux-arm64 и musl: матрица написана по рабочему release.yml и шаблону napi-rs, но раннеры здесь не запускались.
  • Job публикации в npm (специально: нет секрета и нет тега).
  • Кросс-компиляция --use-napi-cross / zig musl.
  • Дашборд окружения Cursor всё ещё personal/DB и не содержит этот environment.json, пока агент не стартует с ревизии, где файл уже есть (после мержа в main или с этой ветки). Отдельный environment build в облаке не запускался: install проверен локально.

Бэклог

  1. Дождаться зелёного CI на матрице prebuild и починить первый упавший таргет (чаще всего musl/zig или macOS x64).
  2. Прогнать новый .cursor/install.sh свежим агентом с этой ветки и сохранить окружение, когда сборка зелёная.
  3. Добавить в CI проверку linux-musl (Alpine) и, если раннеры доступны, Bun/Node на darwin-arm64 и win32-x64, а не только сборку.
  4. Зафиксировать контракт soft-fail ("") против throw в одном месте и покрыть URL/лимиты теми же фикстурами под Node, не только под Bun.
  5. Убрать расхождение: явный формат ods/xlsx для буфера всё равно идёт через автоопределение calamine.
  6. Вынести генерацию sample.xls из зависимости xlwt или закоммитить способ воспроизведения без pip.
  7. Отдельный релизный прогон по тегу v* с уже заведённым NPM_TOKEN, без ручной публикации.
Open in Web Open in Cursor 

Add AGENTS.md, a Cloud Agent install script, fixtures and tests for every
supported format, and CI for fmt, clippy, Node/Bun tests, and napi prebuilds.

Co-authored-by: kellas <alex.step.kellas@gmail.com>
@alexstep
alexstep marked this pull request as ready for review October 7, 2026 21:00
@alexstep
alexstep merged commit e0895ce into main Oct 7, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants