- Node.js ≥ 22
- Rust (stable) with
wasm32-unknown-unknowntarget:rustup target add wasm32-unknown-unknown - Stellar CLI:
cargo install --locked stellar-cli --features opt
Each component has its own test command. Run them from the repo root:
# Soroban contracts
cd contract && cargo test
cd contract/agents && cargo test
# Backend (vitest)
cd backend && npm ci && npm test
# Frontend (jest + tsc)
cd frontend && npm ci && npx tsc --noEmit && npm test
# Agent (vitest)
cd agent && npm ci && npm testcd contract && stellar contract build
cd contract/agents && stellar contract buildAll of the above run automatically on every PR and push to main via GitHub Actions (.github/workflows/ci.yml). Branch protection requiring all jobs to pass before merge is a planned follow-up.
- Rust: run
cargo fmtbefore committing;cargo fmt --all --checkruns in CI under thecontract-buildjob - JS/TS: follow the existing ESLint and TypeScript configuration in each package (JS lint CI steps are a planned follow-up)
- Fork the repo and create a branch:
git checkout -b feat/your-feature - Make your changes and ensure all tests pass locally
- Open a PR against
mainwith a clear description of what changed and why