# Phase 2, Milestone 2: CLI Commands
> Complete CLI command implementation
**Status**: ✅ Complete
**Priority**: High
**Application**: `synor-cli`
---
## Overview
Implement all 23 CLI commands for wallet management, transactions, block queries, and smart contract interaction.
---
## Tasks
### Task 2.1: Wallet Commands
- [x] `synor wallet create` - Generate new wallet
- [x] `synor wallet recover` - Recover from mnemonic
- [x] `synor wallet info` - Display wallet info
- [x] `synor wallet addresses` - List addresses
- [x] `synor wallet new-address` - Generate new address
- [x] `synor wallet export` - Export wallet backup
- [x] `synor wallet import` - Import wallet backup
**Files:**
- `apps/cli/src/commands/wallet.rs`
**Validation:**
```bash
./target/release/synor wallet create
./target/release/synor wallet info
./target/release/synor wallet addresses
```
### Task 2.2: Balance & Transaction Commands
- [x] `synor balance` - Query UTXO balance
- [x] `synor send
` - Send SYNOR
- [x] `synor tx ` - View transaction details
- [x] `synor mempool` - View pending transactions
- [x] `synor utxos` - List UTXOs
**Files:**
- `apps/cli/src/commands/balance.rs`
- `apps/cli/src/commands/send.rs`
- `apps/cli/src/commands/tx.rs`
**Validation:**
```bash
./target/release/synor balance
./target/release/synor send synor:qz... 1.0
./target/release/synor tx
```
### Task 2.3: Block Commands
- [x] `synor block ` - Fetch block
- [x] `synor tips` - Get current DAG tips
- [x] `synor info` - Chain information
**Files:**
- `apps/cli/src/commands/block.rs`
- `apps/cli/src/commands/info.rs`
**Validation:**
```bash
./target/release/synor block 0
./target/release/synor tips
./target/release/synor info
```
### Task 2.4: Network Commands
- [x] `synor peers` - List connected peers
- [x] `synor peer add ` - Add peer
- [x] `synor peer ban ` - Ban peer
**Files:**
- `apps/cli/src/commands/peers.rs`
**Validation:**
```bash
./target/release/synor peers
```
### Task 2.5: Mining Commands
- [x] `synor mining start` - Start mining
- [x] `synor mining stop` - Stop mining
- [x] `synor mining status` - Mining status
- [x] `synor mining set-address` - Set coinbase address
**Files:**
- `apps/cli/src/commands/mining.rs`
**Validation:**
```bash
./target/release/synor mining status
```
### Task 2.6: Smart Contract Commands
- [x] `synor contract deploy ` - Deploy contract
- [x] `synor contract call ` - Call contract
- [x] `synor contract query ` - Query contract (read-only)
**Files:**
- `apps/cli/src/commands/contract.rs`
**Validation:**
```bash
./target/release/synor contract deploy ./contract.wasm
./target/release/synor contract call transfer --args '...'
```
### Task 2.7: Governance Commands
- [x] `synor gov propose` - Create proposal
- [x] `synor gov vote` - Vote on proposal
- [x] `synor gov list` - List proposals
- [x] `synor gov info` - Governance info
**Files:**
- `apps/cli/src/commands/governance.rs`
**Validation:**
```bash
./target/release/synor gov list
./target/release/synor gov info
```
---
## Validation
### Validation Commands
```bash
# List all commands
./target/release/synor --help
# Test each command category
./target/release/synor wallet --help
./target/release/synor mining --help
./target/release/synor contract --help
./target/release/synor gov --help
# Run CLI tests
cargo test -p synor-cli
```
### Validation Agents
| Agent | Purpose |
|-------|---------|
| `code-reviewer` | Review command implementations |
| `Explore` | Verify all commands exist |
### Command Matrix
| Command | Args | Output | RPC Method |
|---------|------|--------|------------|
| `balance` | - | Amount | `synor_getBalance` |
| `send` | addr, amt | TxHash | `synor_submitTransaction` |
| `block` | hash/height | Block | `synor_getBlock` |
| `tips` | - | Hash[] | `synor_getTips` |
| `info` | - | NodeInfo | `synor_getInfo` |
| `peers` | - | Peer[] | `synor_getPeerInfo` |
| `mempool` | - | Tx[] | `synor_getMempool` |
### Security Checks
- [ ] Sensitive data (keys, mnemonic) not logged
- [ ] Password input hidden
- [ ] RPC connection uses timeout
- [ ] Invalid addresses rejected early
- [ ] Amount overflow checked
### UX Validation
- [ ] Help text for all commands
- [ ] Error messages are helpful
- [ ] Progress indicators for long operations
- [ ] Confirmation prompts for destructive actions
---
## Output Formats
All commands support:
- Human-readable (default)
- JSON (`--format json`)
- Compact (`--format compact`)
```bash
./target/release/synor balance --format json
```
---
## Acceptance Criteria
1. All 23 commands implemented
2. Help text for every command
3. JSON output format supported
4. Error handling complete
5. All commands tested
---
*Completed: January 2025*