Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
63eb688
integrate Miden testnet indexer
m1amgn May 21, 2026
01a8b2f
added Miden testnet
m1amgn Jun 3, 2026
d8f4d70
Merge pull request #630 from citizenweb3/feat/miden-testnet-integration
alibabaedge Jun 3, 2026
438eda9
#621: added validators votes services
m1amgn Jun 6, 2026
de7a212
Merge pull request #631 from citizenweb3/updates/dev-update
alibabaedge Jun 7, 2026
d26b08b
fix: reschedule jobs
m1amgn Jun 9, 2026
890bf53
Merge pull request #632 from citizenweb3/updates/dev-update
alibabaedge Jun 9, 2026
000ddca
#634: added self-staked Aztec providers
m1amgn Jun 11, 2026
f7b6213
Merge pull request #635 from citizenweb3/feature/add-aztec-selfstake-…
alibabaedge Jun 11, 2026
e03e01b
#634: added self-staked Aztec providers
m1amgn Jun 11, 2026
dd4087d
Merge pull request #636 from citizenweb3/feature/add-aztec-selfstake-…
alibabaedge Jun 12, 2026
8951e0c
#634: added self-staked Aztec providers
m1amgn Jun 13, 2026
48ffa6f
#621: added account and valoper txs
m1amgn Jun 16, 2026
5c54447
Merge pull request #637 from citizenweb3/feature/add-aztec-selfstake-…
alibabaedge Jun 17, 2026
b83fed0
Merge pull request #638 from citizenweb3/updates/dev-update
alibabaedge Jun 17, 2026
03a9ed0
#566: added Monero
m1amgn Jun 23, 2026
9be9c8d
#616: fixed menus tabs
m1amgn Jun 23, 2026
fa4e234
Merge pull request #640 from citizenweb3/updates/dev-update
alibabaedge Jun 24, 2026
ca5a746
#621: added AtomOne validators votes, txs and accounts txs
m1amgn Jun 26, 2026
44d1c6b
Merge pull request #641 from citizenweb3/updates/dev-update
alibabaedge Jun 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ AZTEC_INDEXER_BASE_URL="http://localhost:8000"
# Optional: API key for authentication (if required by your indexer)
# AZTEC_INDEXER_API_KEY=""

# Monero RPC (self-hosted at rpc.monero.citizenweb3.com).
# Bearer token used by server/tools/chains/monero/rpc-client.ts. Obtain from project owner.
MONERO_RPC_TOKEN=""

# Monero Indexer API (server-side only, no NEXT_PUBLIC_ prefix).
# External indexer service we control: provides blocks/transactions list and detail endpoints.
# Mirrors the Aztec indexer pattern (typed HTTP client + Bearer auth).
MONERO_INDEXER_BASE_URL="http://localhost:8100"
MONERO_INDEXER_API_TOKEN=""

# ============================================
# OpenTelemetry Configuration
# ============================================
Expand Down Expand Up @@ -114,6 +124,17 @@ LOGOS_INDEXER_BASE_URL="https://indexer.testnet-logos.citizenweb3.com"
# Required for getChainUptime to fetch /api/v1/stats. If empty, getChainUptime returns null with a warning.
LOGOS_INDEXER_API_TOKEN=""

# ============================================
# Miden Testnet
# ============================================

# Base URL for citizenweb3 Miden indexer (server- and client-side)
MIDEN_INDEXER_BASE_URL="https://indexer.miden-testnet.citizenweb3.com"

# Bearer token for citizenweb3 Miden indexer (https://indexer.miden-testnet.citizenweb3.com)
# Required for getChainUptime to fetch /api/v1/stats. If empty, getChainUptime returns null with a warning.
MIDEN_INDEXER_API_TOKEN=""

# ============================================
# Cosmos Hub Indexer (chain-data-indexer, cosmos-indexer-api)
# ============================================
Expand Down
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,13 @@ next-env.d.ts

# Vertex AI service account (second layer of defense — primary is secrets/.gitignore)
/secrets/*.json
/.agent-reviews

# agent tooling / local artifacts
/graphify-out
/.playwright-mcp
/.tasks
.claude/settings.json

# design-iteration screenshots (root-level scratch)
/*.png
151 changes: 88 additions & 63 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,30 @@ If an `AGENTS.md` file exists in the target directory:

## Code Search & Documentation

### Semantic Search (DeepContext)
### Semantic Search (clawmem)

When you need to find code by meaning — use DeepContext MCP tools:
When you need to find code by meaning — use clawmem MCP tools:

1. First run `index_codebase` if not indexed yet
2. Use `search_codebase` for semantic search queries
- Use `find_similar` for semantic search queries
- Use `intent_search` for concept-based discovery

Examples:
- "authentication logic" → search_codebase
- "where is JWT validated" → search_codebase
- "find all API endpoints" → search_codebase
- "authentication logic" → find_similar
- "where is JWT validated" → find_similar
- "find all API endpoints" → intent_search

Use DeepContext when you don't know exact names and need to discover relevant code.
Use clawmem when you don't know exact names and need to discover relevant code.

### Code Relationships & Impact (GitNexus)
### Code Relationships & Impact (Graphify)

When you need to understand how code connects — use GitNexus MCP tools:
When you need to understand how code connects — use the Graphify CLI:

- `gitnexus_query({query: "concept"})` — find execution flows by concept
- `gitnexus_context({name: "symbolName"})` — 360° view: callers, callees, processes
- `gitnexus_impact({target: "functionName", direction: "upstream"})` — blast radius before editing
- `gitnexus_detect_changes()` — pre-commit scope check
- `graphify query "concept"` — find code/flows by concept
- `graphify explain "symbolName"` — 360° view: neighbors, callers, file:line
- `graphify affected "functionName"` — blast radius before editing
- `graphify update .` — incremental graph re-extraction after edits

Use GitNexus when you need to understand relationships, what will break, or trace execution flows.
Use Graphify when you need to understand relationships, what will break, or trace execution flows.

### Library Documentation (Context7)

Expand All @@ -54,9 +54,9 @@ Use Context7 for:

| Need | Tool |
|------|------------------------------------|
| Semantic search by meaning | DeepContext (`search_codebase`) |
| Code relationships / execution flows | GitNexus (`query`, `context`) |
| Impact before changes | GitNexus (`impact`, `detect_changes`) |
| Semantic search by meaning | clawmem (`find_similar`) |
| Code relationships / execution flows | Graphify (`query`, `explain`, `path`) |
| Impact before changes | Graphify (`affected`) |
| Library docs / examples | Context7 |
| Exact string match | grep |
| Project architecture | Read CLAUDE.md and AGENTS.md files |
Expand All @@ -72,6 +72,41 @@ Use Context7 for:

---

## Cross-Agent Reviews

This repository uses the global `agent-review` CLI for Codex <-> Claude review handoffs.
The CLI is installed outside the repo; review state is local in `.agent-reviews/`.

Use from the repository root:

```bash
agent-review handoff \
--assignee codex \
--title "Short review title" \
--summary "What changed and why" \
--files path/a.ts,path/b.ts \
--basis docs/design.md,commit-or-review-id \
--review-focus "correctness, regressions, missing tests" \
--tests "yarn test ..." \
--risks "known risks or none"

agent-review next --assignee codex
agent-review respond <review-id> --finding F1 --status fixed --summary "What changed"
agent-review verify <review-id> --status passed --summary "Verification result"
agent-review close <review-id>
agent-review validate
```

Protocol:
- `.agent-reviews/open/` contains active reviews; `.agent-reviews/closed/` contains closed reviews.
- Claude creates structured handoffs with `agent-review handoff --assignee codex`.
- Codex adds findings under `## Findings` and only closes after satisfactory verification.
- Assignees must respond to every stable finding ID under `# Assignee Response`.
- Do not delete or rewrite reviewer findings; append responses and verification instead.
- Keep the tool global. Do not add repo-local review scripts unless the protocol itself changes.

---

## Project Overview

ValidatorInfo is a Web3 blockchain explorer providing real-time metrics for validators, mining pools, tokens, and networks across multiple blockchain ecosystems (Cosmos, Polkadot, Ethereum, Namada, Aztec, etc.). The application provides interactive dashboards, validator comparisons, staking information, and governance proposals tracking.
Expand Down Expand Up @@ -337,84 +372,74 @@ Follow these rules when you write code:
- Develop modules, functions, classes, and components in accordance with the SOLID principles: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
- Don't use BIGINT for PK autoincrement IDs in Prisma schema: use INT or STRING as ciud

<!-- gitnexus:start -->
# GitNexus — Code Intelligence
<!-- graphify:start -->
# Graphify — Code Intelligence

This project is indexed by GitNexus as **validatorinfo** (3542 symbols, 9796 relationships, 223 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
This project is indexed by Graphify as **validatorinfo** (5360 nodes, 10373 edges). The graph is a local, deterministic Tree-sitter AST graph in `graphify-out/graph.json` (zero tokens, no API key). Use the `graphify` CLI to understand code, assess impact, and navigate safely.

> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
> If results look stale after edits, run `graphify update .` in terminal to re-extract (incremental, no LLM).

## Always Do

- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `gitnexus_impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user.
- **MUST run `gitnexus_detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows.
- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits.
- When exploring unfamiliar code, use `gitnexus_query({query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance.
- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `gitnexus_context({name: "symbolName"})`.
- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `graphify affected "symbolName"` and report the blast radius (direct callers/importers, transitive deps, depth) to the user.
- **MUST re-check scope before committing**: run `graphify update .`, then `graphify affected` on each changed symbol to verify only expected symbols are touched.
- **MUST warn the user** if `affected` shows a wide blast radius (many d=1 dependents) before proceeding with edits.
- When exploring unfamiliar code, use `graphify query "concept"` (BFS traversal) to find execution flows instead of grepping.
- When you need full context on a specific symbol — neighbors, callers, file:line — use `graphify explain "symbolName"`.

## When Debugging

1. `gitnexus_query({query: "<error or symptom>"})` — find execution flows related to the issue
2. `gitnexus_context({name: "<suspect function>"})` — see all callers, callees, and process participation
3. `READ gitnexus://repo/validatorinfo/process/{processName}` — trace the full execution flow step by step
4. For regressions: `gitnexus_detect_changes({scope: "compare", base_ref: "main"})` — see what your branch changed
1. `graphify query "<error or symptom>"` — find flows related to the issue
2. `graphify explain "<suspect function>"` — see neighbors, callers, file:line
3. `graphify path "A" "B"` — trace how two symbols connect
4. For regressions: `graphify affected "<changed symbol>"` — see what your change reaches

## When Refactoring

- **Renaming**: MUST use `gitnexus_rename({symbol_name: "old", new_name: "new", dry_run: true})` first. Review the preview — graph edits are safe, text_search edits need manual review. Then run with `dry_run: false`.
- **Extracting/Splitting**: MUST run `gitnexus_context({name: "target"})` to see all incoming/outgoing refs, then `gitnexus_impact({target: "target", direction: "upstream"})` to find all external callers before moving code.
- After any refactor: run `gitnexus_detect_changes({scope: "all"})` to verify only expected files changed.
- **Renaming**: Graphify has no coordinated rename. First run `graphify affected "old"` to enumerate every caller/importer, edit each explicitly, then `graphify update .`. NEVER blind find-and-replace.
- **Extracting/Splitting**: run `graphify explain "target"` for incoming/outgoing refs, then `graphify affected "target"` to find all external callers before moving code.
- After any refactor: run `graphify update .` and re-check `affected` on the touched symbols.

## Never Do

- NEVER edit a function, class, or method without first running `gitnexus_impact` on it.
- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis.
- NEVER rename symbols with find-and-replace — use `gitnexus_rename` which understands the call graph.
- NEVER commit changes without running `gitnexus_detect_changes()` to check affected scope.
- NEVER edit a function, class, or method without first running `graphify affected` on it.
- NEVER ignore a wide blast radius (many direct dependents) without telling the user.
- NEVER rename symbols with find-and-replace — enumerate callers via `graphify affected` first.
- NEVER commit without re-running `graphify update .` + `affected` to check scope.

## Tools Quick Reference

| Tool | When to use | Command |
|------|-------------|---------|
| `query` | Find code by concept | `gitnexus_query({query: "auth validation"})` |
| `context` | 360-degree view of one symbol | `gitnexus_context({name: "validateUser"})` |
| `impact` | Blast radius before editing | `gitnexus_impact({target: "X", direction: "upstream"})` |
| `detect_changes` | Pre-commit scope check | `gitnexus_detect_changes({scope: "staged"})` |
| `rename` | Safe multi-file rename | `gitnexus_rename({symbol_name: "old", new_name: "new", dry_run: true})` |
| `cypher` | Custom graph queries | `gitnexus_cypher({query: "MATCH ..."})` |
| Command | When to use |
|---------|-------------|
| `graphify query "<q>"` | Find code by concept (BFS) |
| `graphify explain "X"` | 360-degree view of one symbol |
| `graphify affected "X"` | Blast radius before editing (reverse impact) |
| `graphify path "A" "B"` | Shortest path between two symbols |
| `graphify update .` | Incremental re-extract after edits (no LLM) |

## Impact Risk Levels
## Impact Depth (`graphify affected "X" --depth N`)

| Depth | Meaning | Action |
|-------|---------|--------|
| d=1 | WILL BREAK — direct callers/importers | MUST update these |
| d=2 | LIKELY AFFECTED — indirect deps | Should test |
| d=3 | MAY NEED TESTING — transitive | Test if critical path |

## Resources

| Resource | Use for |
|----------|---------|
| `gitnexus://repo/validatorinfo/context` | Codebase overview, check index freshness |
| `gitnexus://repo/validatorinfo/clusters` | All functional areas |
| `gitnexus://repo/validatorinfo/processes` | All execution flows |
| `gitnexus://repo/validatorinfo/process/{name}` | Step-by-step execution trace |

## Self-Check Before Finishing

Before completing any code modification task, verify:
1. `gitnexus_impact` was run for all modified symbols
2. No HIGH/CRITICAL risk warnings were ignored
3. `gitnexus_detect_changes()` confirms changes match expected scope
1. `graphify affected` was run for all modified symbols
2. No wide blast radius was left unreported
3. `graphify update .` ran and the graph reflects the edits
4. All d=1 (WILL BREAK) dependents were updated

## CLI

- Re-index: `npx gitnexus analyze`
- Check freshness: `npx gitnexus status`
- Generate docs: `npx gitnexus wiki`
- Re-index (incremental): `graphify update .`
- Check freshness: `graphify check-update .`
- Architecture/call-flow HTML: `graphify export callflow-html`

<!-- gitnexus:end -->
<!-- graphify:end -->

---

Expand Down
Loading