refactor: flatten CLI directory structure - remove 'box in a box'
BEFORE: /opt/aitbc/cli/ ├── aitbc_cli/ # Python package (box in a box) │ ├── commands/ │ ├── main.py │ └── ... ├── setup.py AFTER: /opt/aitbc/cli/ # Flat structure ├── commands/ # Direct access ├── main.py # Direct access ├── auth/ ├── config/ ├── core/ ├── models/ ├── utils/ ├── plugins.py └── setup.py CHANGES MADE: - Moved all files from aitbc_cli/ to cli/ root - Fixed all relative imports (from . to absolute imports) - Updated setup.py entry point: aitbc_cli.main → main - Added CLI directory to Python path in entry script - Simplified deployment.py to remove dependency on deleted core.deployment - Fixed import paths in all command files - Recreated virtual environment with new structure BENEFITS: - Eliminated 'box in a box' nesting - Simpler directory structure - Direct access to all modules - Cleaner imports - Easier maintenance and development - CLI works with both 'python main.py' and 'aitbc' commands
This commit is contained in:
3
cli/models/__init__.py
Executable file
3
cli/models/__init__.py
Executable file
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
Data models for multi-chain functionality
|
||||
"""
|
||||
221
cli/models/chain.py
Executable file
221
cli/models/chain.py
Executable file
@@ -0,0 +1,221 @@
|
||||
"""
|
||||
Data models for multi-chain functionality
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Dict, List, Optional, Any
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
class ChainType(str, Enum):
|
||||
"""Chain type enumeration"""
|
||||
MAIN = "main"
|
||||
TOPIC = "topic"
|
||||
PRIVATE = "private"
|
||||
TEMPORARY = "temporary"
|
||||
|
||||
class ChainStatus(str, Enum):
|
||||
"""Chain status enumeration"""
|
||||
ACTIVE = "active"
|
||||
INACTIVE = "inactive"
|
||||
SYNCING = "syncing"
|
||||
ERROR = "error"
|
||||
MAINTENANCE = "maintenance"
|
||||
|
||||
class ConsensusAlgorithm(str, Enum):
|
||||
"""Consensus algorithm enumeration"""
|
||||
POW = "pow" # Proof of Work
|
||||
POS = "pos" # Proof of Stake
|
||||
POA = "poa" # Proof of Authority
|
||||
HYBRID = "hybrid"
|
||||
|
||||
class GenesisAccount(BaseModel):
|
||||
"""Genesis account configuration"""
|
||||
address: str = Field(..., description="Account address")
|
||||
balance: str = Field(..., description="Account balance in wei")
|
||||
type: str = Field(default="regular", description="Account type")
|
||||
|
||||
class GenesisContract(BaseModel):
|
||||
"""Genesis contract configuration"""
|
||||
name: str = Field(..., description="Contract name")
|
||||
address: str = Field(..., description="Contract address")
|
||||
bytecode: str = Field(..., description="Contract bytecode")
|
||||
abi: Dict[str, Any] = Field(..., description="Contract ABI")
|
||||
|
||||
class PrivacyConfig(BaseModel):
|
||||
"""Privacy configuration for chains"""
|
||||
visibility: str = Field(default="public", description="Chain visibility")
|
||||
access_control: str = Field(default="open", description="Access control type")
|
||||
require_invitation: bool = Field(default=False, description="Require invitation to join")
|
||||
encryption_enabled: bool = Field(default=False, description="Enable transaction encryption")
|
||||
|
||||
class ConsensusConfig(BaseModel):
|
||||
"""Consensus configuration"""
|
||||
algorithm: ConsensusAlgorithm = Field(..., description="Consensus algorithm")
|
||||
block_time: int = Field(default=5, description="Block time in seconds")
|
||||
max_validators: int = Field(default=100, description="Maximum number of validators")
|
||||
min_stake: int = Field(default=1000000000000000000, description="Minimum stake in wei")
|
||||
authorities: List[str] = Field(default_factory=list, description="List of authority addresses")
|
||||
|
||||
class ChainParameters(BaseModel):
|
||||
"""Chain parameters"""
|
||||
max_block_size: int = Field(default=1048576, description="Maximum block size in bytes")
|
||||
max_gas_per_block: int = Field(default=10000000, description="Maximum gas per block")
|
||||
min_gas_price: int = Field(default=1000000000, description="Minimum gas price in wei")
|
||||
block_reward: str = Field(default="2000000000000000000", description="Block reward in wei")
|
||||
difficulty: int = Field(default=1000000, description="Initial difficulty")
|
||||
|
||||
class ChainLimits(BaseModel):
|
||||
"""Chain limits"""
|
||||
max_participants: int = Field(default=1000, description="Maximum participants")
|
||||
max_contracts: int = Field(default=100, description="Maximum smart contracts")
|
||||
max_transactions_per_block: int = Field(default=500, description="Max transactions per block")
|
||||
max_storage_size: int = Field(default=1073741824, description="Max storage size in bytes")
|
||||
|
||||
class GenesisConfig(BaseModel):
|
||||
"""Genesis block configuration"""
|
||||
chain_id: Optional[str] = Field(None, description="Chain ID")
|
||||
chain_type: ChainType = Field(..., description="Chain type")
|
||||
purpose: str = Field(..., description="Chain purpose")
|
||||
name: str = Field(..., description="Chain name")
|
||||
description: Optional[str] = Field(None, description="Chain description")
|
||||
timestamp: Optional[datetime] = Field(None, description="Genesis timestamp")
|
||||
parent_hash: str = Field(default="0x0000000000000000000000000000000000000000000000000000000000000000", description="Parent hash")
|
||||
gas_limit: int = Field(default=10000000, description="Gas limit")
|
||||
gas_price: int = Field(default=20000000000, description="Gas price")
|
||||
difficulty: int = Field(default=1000000, description="Initial difficulty")
|
||||
block_time: int = Field(default=5, description="Block time")
|
||||
accounts: List[GenesisAccount] = Field(default_factory=list, description="Genesis accounts")
|
||||
contracts: List[GenesisContract] = Field(default_factory=list, description="Genesis contracts")
|
||||
consensus: ConsensusConfig = Field(..., description="Consensus configuration")
|
||||
privacy: PrivacyConfig = Field(default_factory=PrivacyConfig, description="Privacy settings")
|
||||
parameters: ChainParameters = Field(default_factory=ChainParameters, description="Chain parameters")
|
||||
|
||||
class ChainConfig(BaseModel):
|
||||
"""Chain configuration"""
|
||||
type: ChainType = Field(..., description="Chain type")
|
||||
purpose: str = Field(..., description="Chain purpose")
|
||||
name: str = Field(..., description="Chain name")
|
||||
description: Optional[str] = Field(None, description="Chain description")
|
||||
consensus: ConsensusConfig = Field(..., description="Consensus configuration")
|
||||
privacy: PrivacyConfig = Field(default_factory=PrivacyConfig, description="Privacy settings")
|
||||
parameters: ChainParameters = Field(default_factory=ChainParameters, description="Chain parameters")
|
||||
limits: ChainLimits = Field(default_factory=ChainLimits, description="Chain limits")
|
||||
|
||||
class ChainInfo(BaseModel):
|
||||
"""Chain information"""
|
||||
id: str = Field(..., description="Chain ID")
|
||||
type: ChainType = Field(..., description="Chain type")
|
||||
purpose: str = Field(..., description="Chain purpose")
|
||||
name: str = Field(..., description="Chain name")
|
||||
description: Optional[str] = Field(None, description="Chain description")
|
||||
status: ChainStatus = Field(..., description="Chain status")
|
||||
created_at: datetime = Field(..., description="Creation timestamp")
|
||||
block_height: int = Field(default=0, description="Current block height")
|
||||
size_mb: float = Field(default=0.0, description="Chain size in MB")
|
||||
node_count: int = Field(default=0, description="Number of nodes")
|
||||
active_nodes: int = Field(default=0, description="Number of active nodes")
|
||||
contract_count: int = Field(default=0, description="Number of contracts")
|
||||
client_count: int = Field(default=0, description="Number of clients")
|
||||
miner_count: int = Field(default=0, description="Number of miners")
|
||||
agent_count: int = Field(default=0, description="Number of agents")
|
||||
consensus_algorithm: ConsensusAlgorithm = Field(..., description="Consensus algorithm")
|
||||
block_time: int = Field(default=5, description="Block time in seconds")
|
||||
tps: float = Field(default=0.0, description="Transactions per second")
|
||||
avg_block_time: float = Field(default=0.0, description="Average block time")
|
||||
avg_gas_used: int = Field(default=0, description="Average gas used per block")
|
||||
growth_rate_mb_per_day: float = Field(default=0.0, description="Growth rate MB per day")
|
||||
gas_price: int = Field(default=20000000000, description="Current gas price")
|
||||
memory_usage_mb: float = Field(default=0.0, description="Memory usage in MB")
|
||||
disk_usage_mb: float = Field(default=0.0, description="Disk usage in MB")
|
||||
privacy: PrivacyConfig = Field(default_factory=PrivacyConfig, description="Privacy settings")
|
||||
|
||||
class NodeInfo(BaseModel):
|
||||
"""Node information"""
|
||||
id: str = Field(..., description="Node ID")
|
||||
type: str = Field(default="full", description="Node type")
|
||||
status: str = Field(..., description="Node status")
|
||||
version: str = Field(..., description="Node version")
|
||||
uptime_days: int = Field(default=0, description="Uptime in days")
|
||||
uptime_hours: int = Field(default=0, description="Uptime hours")
|
||||
hosted_chains: Dict[str, ChainInfo] = Field(default_factory=dict, description="Hosted chains")
|
||||
cpu_usage: float = Field(default=0.0, description="CPU usage percentage")
|
||||
memory_usage_mb: float = Field(default=0.0, description="Memory usage in MB")
|
||||
disk_usage_mb: float = Field(default=0.0, description="Disk usage in MB")
|
||||
network_in_mb: float = Field(default=0.0, description="Network in MB/s")
|
||||
network_out_mb: float = Field(default=0.0, description="Network out MB/s")
|
||||
|
||||
class GenesisAccount(BaseModel):
|
||||
"""Genesis account configuration"""
|
||||
address: str = Field(..., description="Account address")
|
||||
balance: str = Field(..., description="Account balance in wei")
|
||||
type: str = Field(default="regular", description="Account type")
|
||||
|
||||
class GenesisContract(BaseModel):
|
||||
"""Genesis contract configuration"""
|
||||
name: str = Field(..., description="Contract name")
|
||||
address: str = Field(..., description="Contract address")
|
||||
bytecode: str = Field(..., description="Contract bytecode")
|
||||
abi: Dict[str, Any] = Field(..., description="Contract ABI")
|
||||
|
||||
class GenesisBlock(BaseModel):
|
||||
"""Genesis block configuration"""
|
||||
chain_id: str = Field(..., description="Chain ID")
|
||||
chain_type: ChainType = Field(..., description="Chain type")
|
||||
purpose: str = Field(..., description="Chain purpose")
|
||||
name: str = Field(..., description="Chain name")
|
||||
description: Optional[str] = Field(None, description="Chain description")
|
||||
timestamp: datetime = Field(..., description="Genesis timestamp")
|
||||
parent_hash: str = Field(default="0x0000000000000000000000000000000000000000000000000000000000000000", description="Parent hash")
|
||||
gas_limit: int = Field(default=10000000, description="Gas limit")
|
||||
gas_price: int = Field(default=20000000000, description="Gas price")
|
||||
difficulty: int = Field(default=1000000, description="Initial difficulty")
|
||||
block_time: int = Field(default=5, description="Block time")
|
||||
accounts: List[GenesisAccount] = Field(default_factory=list, description="Genesis accounts")
|
||||
contracts: List[GenesisContract] = Field(default_factory=list, description="Genesis contracts")
|
||||
consensus: ConsensusConfig = Field(..., description="Consensus configuration")
|
||||
privacy: PrivacyConfig = Field(default_factory=PrivacyConfig, description="Privacy settings")
|
||||
parameters: ChainParameters = Field(default_factory=ChainParameters, description="Chain parameters")
|
||||
state_root: str = Field(..., description="State root hash")
|
||||
hash: str = Field(..., description="Genesis block hash")
|
||||
|
||||
class ChainMigrationPlan(BaseModel):
|
||||
"""Chain migration plan"""
|
||||
chain_id: str = Field(..., description="Chain ID to migrate")
|
||||
source_node: str = Field(..., description="Source node ID")
|
||||
target_node: str = Field(..., description="Target node ID")
|
||||
size_mb: float = Field(..., description="Chain size in MB")
|
||||
estimated_minutes: int = Field(..., description="Estimated migration time in minutes")
|
||||
required_space_mb: float = Field(..., description="Required space in MB")
|
||||
available_space_mb: float = Field(..., description="Available space in MB")
|
||||
feasible: bool = Field(..., description="Migration feasibility")
|
||||
issues: List[str] = Field(default_factory=list, description="Migration issues")
|
||||
|
||||
class ChainMigrationResult(BaseModel):
|
||||
"""Chain migration result"""
|
||||
chain_id: str = Field(..., description="Chain ID")
|
||||
source_node: str = Field(..., description="Source node ID")
|
||||
target_node: str = Field(..., description="Target node ID")
|
||||
success: bool = Field(..., description="Migration success")
|
||||
blocks_transferred: int = Field(default=0, description="Number of blocks transferred")
|
||||
transfer_time_seconds: int = Field(default=0, description="Transfer time in seconds")
|
||||
verification_passed: bool = Field(default=False, description="Verification passed")
|
||||
error: Optional[str] = Field(None, description="Error message if failed")
|
||||
|
||||
class ChainBackupResult(BaseModel):
|
||||
"""Chain backup result"""
|
||||
chain_id: str = Field(..., description="Chain ID")
|
||||
backup_file: str = Field(..., description="Backup file path")
|
||||
original_size_mb: float = Field(..., description="Original size in MB")
|
||||
backup_size_mb: float = Field(..., description="Backup size in MB")
|
||||
compression_ratio: float = Field(default=1.0, description="Compression ratio")
|
||||
checksum: str = Field(..., description="Backup file checksum")
|
||||
verification_passed: bool = Field(default=False, description="Verification passed")
|
||||
|
||||
class ChainRestoreResult(BaseModel):
|
||||
"""Chain restore result"""
|
||||
chain_id: str = Field(..., description="Chain ID")
|
||||
node_id: str = Field(..., description="Target node ID")
|
||||
blocks_restored: int = Field(default=0, description="Number of blocks restored")
|
||||
verification_passed: bool = Field(default=False, description="Verification passed")
|
||||
error: Optional[str] = Field(None, description="Error message if failed")
|
||||
Reference in New Issue
Block a user