Files
self/AGENTS.md
Aaron DeRuvo a826c71f36 Redo "Mobile SDK: move provingMachine from the app (#1052)" (#1084)" (#1114)
* Redo "Mobile SDK: move provingMachine from the app (#1052)" (#1084)"

This reverts commit 3397fcf43b. which reverted merging proving machine migration

* fix build

* lint fix

* fix imports

* pr suggestions

* make sure not to create multiple instances of stores

* WIP: don't expose useSelfAppStore directly in the public API

* Update packages/mobile-sdk-alpha/src/proving/provingMachine.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* dont call protocol store directly

* fix protocol store tests

* fix deeplinks test

* fix web build and exports

* test fixes

* keep reactivity

* remove file name

* WIP: expose stores through SelfClient only

* move protocolStore usage behind SelfClient

* fix deeplinks tests

* lint

* fix provingMachine tests

* remove provingStore from browser exports

* lint

* lint

* fix provingMachine.generatePayload tests

* fix provingMachine.startFetchingData tests

* fix more tests

* remove not exported

* fix more tests

* remove unused

* simplify getAltCSCA signature (fix build?)

* yarn lint

* final touches

---------

Co-authored-by: Leszek Stachowski <leszek.stachowski@self.xyz>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-29 14:17:51 -07:00

5.0 KiB
Raw Permalink Blame History

AGENTS Instructions

Package Management

Package Manager: Yarn

Commands to use: yarn install, yarn add, yarn remove

Note: Do not use npm or pnpm.

This repository is a Yarn v4 monorepo with several workspaces:

  • app mobile app (@selfxyz/mobile-app)
  • circuits zk-SNARK circuits (@selfxyz/circuits)
  • common shared utilities (@selfxyz/common)
  • contracts solidity contracts (@selfxyz/contracts)
  • sdk/core core TypeScript SDK (@selfxyz/core)
  • sdk/qrcode qrcode SDK (@selfxyz/qrcode)
  • packages/mobile-sdk-alpha alpha version of the SDK (@selfxyz/mobile-sdk-alpha)
  • noir noir circuits

Workflow

Setup

  • Ensure Node.js 22.x is installed (see .nvmrc for exact version), then:
    • nvm use
    • corepack enable && corepack prepare yarn@stable --activate
    • Verify: node -v && yarn -v
  • Run yarn install once before running any other commands. This installs root dependencies and sets up husky hooks.

Pre-PR Checklist

Before creating a PR, ensure:

Code Quality

  • yarn nice (or equivalent) passes in affected workspaces
  • yarn types passes across the repo
  • yarn test passes in affected packages
  • yarn build succeeds for all workspaces

AI Review Preparation

  • Clear commit messages following conventional format
  • PR description includes context for AI reviewers
  • Complex changes have inline comments explaining intent
  • Security-sensitive changes flagged for special review

Follow-up Planning

  • Identify any known issues that need separate PRs
  • Note any performance implications
  • Document any breaking changes

Post-PR Validation

After PR creation:

Automated Checks

  • CI pipeline passes all stages
  • No new linting/formatting issues introduced
  • Type checking passes in all affected workspaces
  • Build artifacts generated successfully

Review Integration

  • Address CodeRabbitAI feedback (or document why not)
  • Resolve any security warnings
  • Verify performance benchmarks still pass
  • Confirm no sensitive data exposed in logs/comments

Commit Checks

Before committing, run the following commands:

# Fix linting and formatting issues automatically (for packages that support it)
yarn workspaces foreach -A -p -v --topological-dev --since=HEAD run nice --if-present

# Lint all packages in parallel
yarn lint

# Build all workspaces except `contracts`
yarn build

# Compile Solidity contracts (may occasionally throw a Hardhat config error)
yarn workspace @selfxyz/contracts build

# Run type-checking across the repo
yarn types

Workflow Commands

Pre-PR Validation

# Run all checks before PR - only on changed workspaces since main
# Format and lint changed workspaces (workspace-specific scripts first, then fallback to root)
yarn workspaces foreach -A -p -v --topological-dev --since=origin/main run nice --if-present

# Run global checks across all workspaces
yarn lint && yarn types && yarn build && yarn test

# Alternative: Run workspace-specific checks for changed workspaces only
# yarn workspaces foreach -A -p -v --topological-dev --since=origin/main run lint --if-present
# yarn workspaces foreach -A -p -v --topological-dev --since=origin/main run types --if-present
# yarn workspaces foreach -A -p -v --topological-dev --since=origin/main run build --if-present
# yarn workspaces foreach -A -p -v --topological-dev --since=origin/main run test --if-present

Post-PR Cleanup

# After addressing review feedback
yarn nice  # Fix any formatting issues in affected workspaces
yarn test  # Ensure tests still pass
yarn types # Verify type checking

Tests

  • Run unit tests where available:
    • yarn workspace @selfxyz/common test
    • yarn workspace @selfxyz/circuits test # may fail if OpenSSL algorithms are missing
    • yarn workspace @selfxyz/mobile-app test
    • yarn workspace @selfxyz/mobile-sdk-alpha test
    • For Noir circuits, run nargo test -p <crate> in each noir/crates/* directory.
    • Tests for @selfxyz/contracts are currently disabled in CI and may be skipped.

CI Caching

Use the shared composite actions in .github/actions when caching dependencies in GitHub workflows. They provide consistent cache paths and keys:

  • cache-yarn for Yarn dependencies
  • cache-bundler for Ruby gems
  • cache-gradle for Gradle wrappers and caches
  • cache-pods for CocoaPods

Each action accepts an optional cache-version input (often combined with GH_CACHE_VERSION and a tool-specific version). Avoid calling actions/cache directly so future workflows follow the same strategy.

Formatting

  • Use Prettier configuration from .prettierrc files.
  • Follow .editorconfig for line endings and indentation.

Commit Guidelines

  • Write short, imperative commit messages (e.g. Fix address validation).
  • The pull request body should summarize the changes and mention test results.

Scope

These instructions apply to the entire repository unless overridden by a nested AGENTS.md.