22 Commits

Author SHA1 Message Date
claude d71a2d696d release: синк release.yml с main (без docker, Gitea API, NPM_TOKEN) (#6) 2026-05-28 11:57:17 +00:00
coopops 05d413b37f ci: запускать только на pull_request, убрать триггер push
CI / Lint (pull_request) Successful in 9m21s
CI / Typecheck (pull_request) Successful in 9m29s
CI / Unit tests (pull_request) Successful in 9m32s
CI / Integration tests (pull_request) Successful in 9m43s
CI / Build (pull_request) Successful in 9m31s
Прогон на push в dev/main дублировал проверку, уже сделанную на PR, и жёг
по ~47 мин на нагруженном раннере. Оставляем только pull_request (main, dev):
ветки в эти ветки попадают через PR, который и валидируется; релиз main
триггерит отдельный release.yml.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 16:17:12 +00:00
claude 37efb4834e ci: корректная интеграция на DinD-раннере (docker cp + сеть jobа + redis по имени) (#2)
CI / Lint (push) Successful in 9m22s
CI / Typecheck (push) Successful in 9m27s
CI / Unit tests (push) Successful in 9m34s
CI / Integration tests (push) Successful in 9m41s
CI / Build (push) Successful in 9m28s
CI / Typecheck (pull_request) Has been cancelled
CI / Unit tests (pull_request) Has been cancelled
CI / Integration tests (pull_request) Has been cancelled
CI / Build (pull_request) Has been cancelled
CI / Lint (pull_request) Has been cancelled
Конфиг ноды через docker cp, нода в сети job-контейнера по IP, Redis по имени сервиса. Полный конвейер зелёный (integration 1 passed против живой ноды + SHiP + Redis).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 15:01:55 +00:00
coopops d575da529b ci: поднимать ноду через docker cp вместо bind-mount (DinD)
CI / Lint (push) Successful in 9m26s
CI / Typecheck (push) Successful in 9m28s
CI / Unit tests (push) Successful in 9m33s
CI / Build (push) Has been skipped
CI / Integration tests (push) Failing after 13m2s
Раннер — docker-in-docker (docker.sock хоста в job-контейнере), поэтому
пути bind-mount (-v) резолвятся на ФС хоста: ни mktemp, ни workspace демону
не видны → монтировался пустой каталог, nodeos падал с 'genesis file does
not exist'. Конфиг теперь кладём в контейнер через docker cp (tar по API,
от путей хоста не зависит), config-dir=/mnt/cfg (docker cp не создаёт
родителей, а /mnt/dev/config в образе нет). Проверено локально: chain API
get_info + SHiP 101 Switching Protocols.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 12:52:02 +00:00
claude fce498ce45 feat(events): полный SHiP action_trace в ActionEvent (transaction_id, creator_action_ordinal, receipt.auth_sequence, …) (#1)
CI / Lint (push) Successful in 9m20s
CI / Typecheck (push) Failing after 11m9s
CI / Unit tests (push) Has been skipped
CI / Integration tests (push) Has been skipped
CI / Build (push) Has been skipped
2026-05-26 04:26:33 +00:00
coopops 0c3c3bc002 [549-27][@ant] config: переключить publish обратно на OIDC trusted publishing и синхронизировать URL репозитория coopenomics/parser→coopenomics/parser2 — npm Trusted Publisher теперь настроен на @coopenomics/parser2 через workflow релиза нового имени репо, NPM_TOKEN больше не нужен и sigstore provenance снова включён; bump до 1.0.3 чтобы Lerna опубликовала новую версию и протестировать OIDC-флоу с новой конфигурацией; URL-ы в README/package.json/examples подтянуты под новое имя github-репо parser2 2026-04-23 16:00:32 +00:00
coopops ecc6a25734 [549-27][@ant] config: временно вернуть NPM_TOKEN и провенанс=false в publish-step — первая публикация @coopenomics/parser2 не может идти через OIDC trusted publishing потому что на стороне npm Trusted Publisher настраивается только для уже существующего пакета, а parser2 ещё не создан в реестре; после первого publish добавим Trusted Publisher на npm и вернёмся на OIDC без токена 2026-04-23 15:41:10 +00:00
coopops 167c885a70 [549-27][@ant] refactor: вернуть имя parser2 обратно (полный реверт 549-20) — существующий @coopenomics/parser@2026.x в mono-ai живёт в продакшене (dicoop/cooparser всё ещё деплоится), параллельный publish @coopenomics/parser@1.0.x из этого репо создавал коллизию ожиданий у потребителей; раздельные имена parser2/parser устраняют путаницу. Папка packages/parser→parser2, пакет @coopenomics/parser→@coopenomics/parser2, docker image dicoop/parser→dicoop/parser2, Redis prefix parser:→parser2: (ce:parser:, abi, sub, sync, subs, reparse), метрики parser_*→parser2_*, bin parser2. Версия bumpnута до 1.0.2 для нового публичного пакета @coopenomics/parser2 2026-04-23 14:43:22 +00:00
coopops 2f391db4b4 [549-22][@ant] config: поменять Docker Hub namespace coopenomics→dicoop — реальный owner Docker Hub организации для этого проекта dicoop (coopenomics там не существует), иначе docker push падал с insufficient_scope; image теперь публикуется как docker.io/dicoop/parser:<version> 2026-04-22 15:44:33 +00:00
coopops 94dbcb8400 [549-22][@ant] config: переключить Docker push на Docker Hub и npm publish на trusted publishing (OIDC) — Docker Hub доступнее без префикса реестра чем ghcr (docker pull coopenomics/parser), а OIDC-публикация в npm избавляет от ручного обновления NPM_TOKEN который рано или поздно забудется и сломает релиз; release.yml теперь использует DOCKERHUB_USERNAME/DOCKERHUB_TOKEN для docker login и id-token write permission с NPM_CONFIG_PROVENANCE=true для sigstore-подписанной публикации через настроенный npm Trusted Publisher 2026-04-22 15:36:55 +00:00
coopops fd7ff5fcaa [549-21][@ant] config: убрать id-token permission и явно NPM_CONFIG_PROVENANCE=false — npm автоматически включает provenance когда видит id-token: write + CI=true, а для новых пакетов это блокирует publish с E404; включим обратно после первого успешного релиза 2026-04-22 10:53:04 +00:00
coopops cf988d8c38 [549-21][@ant] config: отключить NPM_CONFIG_PROVENANCE на время первого publish — sigstore attestation требует чтобы пакет уже существовал в реестре, блокирует первоначальную публикацию @coopenomics/coopos-ship-reader; включим обратно после того как пакеты созданы 2026-04-22 10:50:59 +00:00
coopops b5cf922a7b [549-21][@ant] config: интегрировать Lerna для управления пакетами и регенерировать lockfile — упростить multi-package версионирование и публикацию перед первым релизом в npm; lerna.json с independent versioning + pnpm as npmClient + allowBranch=main, npm-скрипты changed/version/publish/release в root package.json для локального интерактивного bump и dry-run проверок, release.yml переключён на lerna publish from-package --yes (smart skip неизменных версий вместо ручного version-check), попутно регенерирован pnpm-lock.yaml который после rename parser2→parser провалил CI на ERR_PNPM_OUTDATED_LOCKFILE 2026-04-22 10:47:38 +00:00
coopops 3bdd240d8a [549-20][@ant] refactor: переименовать parser2→parser, добавить root README и автопубликацию из main — привести репозиторий к релизной форме под публичным именем @coopenomics/parser до первого npm publish; единое имя папки, Redis key prefix (parser2:→parser:), метрик (parser2_*→parser_*) и комментариев устраняет путаницу в CLI, observability и docs; root README описывает монорепу, архитектурную схему, процесс релиза; ci.yml теперь только на push/PR в main и dev, отдельный release.yml на push в main детектит bump версии, публикует пакеты в npm, тегирует, создаёт GitHub Release через changelogithub и пушит Docker-образ в ghcr 2026-04-22 10:40:35 +00:00
coopops 57b3b66513 fix(build): собирать deserialize.worker.cjs, перевести пакет на ESM-only — Piscina требует отдельный .cjs файл, а top-level await несовместим с CJS форматом
- tsup.config.ts: добавлен 3-й entry для src/workers/deserialize.worker.ts (CJS) → dist/deserialize.worker.cjs
- tsup: main index и CLI переведены на ESM-only (TLA в ioredis/piscina импортах несовместим с CJS)
- package.json exports/main/bin: указывают на .js (ESM) вместо .cjs
- WorkerPool.resolveWorkerPath(): ищет worker в dist/ относительно src/ при запуске из источников (нужно для integration тестов)
- ci.yml: добавлен step build @coopenomics/parser перед integration test — worker .cjs должен существовать
2026-04-22 05:14:08 +00:00
coopops 06ed9e375e fix(ci): смонтировать node-config как read-write — nodeos создаёт protocol_features/ внутри config-dir при старте 2026-04-22 04:50:23 +00:00
coopops f5fbef2287 fix(ci): запускать nodeos явно через docker run — образ dicoop/blockchain не имеет CMD, services: не поддерживает передачу команды
- добавлен node-config/config.ini (SHiP на 8080) + genesis.json
- services: blockchain заменён на docker run с монтированием config-dir и командой /usr/local/bin/nodeos
- добавлен вывод docker logs blockchain при failure для диагностики
2026-04-22 04:41:46 +00:00
coopops 748c485cb5 feat(test): добавить end-to-end integration тест с реальным блокчейном — убедиться что парсер захватывает eosio.token::transfer от SHiP до ParserClient
- test/integration/parser.integration.test.ts: beforeAll поднимает блокчейн (preactivate → eosio.boot → features → eosio.token), стартует Parser + ParserClient, тест пушит transfer и ждёт событие
- test/integration/helpers/chain.ts: ChainHelper для деплоя контрактов и push action через @wharfkit/antelope + /v1/chain/abi_json_to_bin
- test/integration/contracts/: скомпилированные eosio.boot.wasm и eosio.token.wasm из boot/contracts/build
- ci.yml: добавлен service dicoop/blockchain:v5.1.0-dev (порты 8888+8080), health-check, CHAIN_URL/SHIP_URL env vars

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 20:33:02 +00:00
coopops bf79f589f8 fix(ci): собирать ship-reader перед typecheck/test — TypeScript не находил .d.ts зависимого workspace пакета без предварительного build 2026-04-21 20:18:44 +00:00
coopops fb21b3fd10 fix: убрать @eosrio/node-abieos из optionalDependencies и обновить CI — устранить рассинхрон lockfile и deprecation warning pnpm/action-setup@v3
- удалён @eosrio/node-abieos из ship-reader/package.json: нативный модуль исключался на CI из-за несовместимости платформы, не попадал в lockfile и ломал --frozen-lockfile
- AbieosDeserializer теперь пробует @coopenomics/abieos, затем @eosrio/node-abieos (оба опциональны, устанавливаются вручную)
- @types/node исправлен с ^3.4.0 на ^20.3.0 (корректная версия)
- pnpm/action-setup обновлён с v3 на v4 во всех jobs (Node 20 deprecation)
- pnpm-lock.yaml регенерирован без abieos specifier

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 20:09:21 +00:00
coopops ac25c32940 [549-12][@ant] feat: v1.0.0 — пример verifier-like, три документа, бенчмарк-отчёт, CI/CD pipeline и Dockerfile — обеспечить готовность пакета к публичному релизу
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 19:31:46 +00:00
coopops 399496d51c [549-3][@ant] feat: реализован @coopenomics/coopos-ship-reader v0.1.0 — SHiP-транспортная основа для универсального индексера блокчейна
- ShipClient: connect()/handshake()/streamBlocks() AsyncIterable + ack(n)
- WharfkitDeserializer + AbieosDeserializer (optional, Linux, runtime fallback)
- 24 native-table типа с computeLookupKey() (портировано из Hyperion, MIT)
- RPC helpers getChainInfo()/getRawAbi() с retry
- tsup ESM+CJS build, tsconfig strict + noUncheckedIndexedAccess
- MIT LICENSE, NOTICE (EOS Rio + AntelopeIO attribution), LICENSE-THIRD-PARTY
- 26 unit-тестов: 26/26 pass; GitHub Actions CI pipeline
2026-04-21 17:28:45 +00:00