remove unused queue.py module and refactor chain_id handling in CLI
Some checks failed
CLI Tests / test-cli (push) Failing after 3s
Security Scanning / security-scan (push) Successful in 1m23s
Blockchain Synchronization Verification / sync-verification (push) Failing after 6s
P2P Network Verification / p2p-verification (push) Successful in 11s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 8s
Some checks failed
CLI Tests / test-cli (push) Failing after 3s
Security Scanning / security-scan (push) Successful in 1m23s
Blockchain Synchronization Verification / sync-verification (push) Failing after 6s
P2P Network Verification / p2p-verification (push) Successful in 11s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 8s
Deleted aitbc/queue.py containing TaskQueue, JobScheduler, BackgroundTaskManager, and WorkerPool classes that were not being used in the codebase. Refactored chain_id handling in CLI to use centralized get_chain_id utility function instead of duplicating chain_id detection logic in send_transaction, get_balance, and agent_operations functions.
This commit is contained in:
@@ -14,9 +14,17 @@ from ..core.marketplace import (
|
||||
from ..utils import output, error, success
|
||||
|
||||
@click.group()
|
||||
def marketplace():
|
||||
@click.option("--chain-id", help="Chain ID for multichain operations (e.g., ait-mainnet, ait-devnet)")
|
||||
@click.pass_context
|
||||
def marketplace(ctx, chain_id: Optional[str]):
|
||||
"""Global chain marketplace commands"""
|
||||
pass
|
||||
ctx.ensure_object(dict)
|
||||
|
||||
# Handle chain_id with auto-detection
|
||||
from ..utils.chain_id import get_chain_id
|
||||
config = load_multichain_config()
|
||||
default_rpc_url = config.blockchain_rpc_url if hasattr(config, 'blockchain_rpc_url') else 'http://localhost:8006'
|
||||
ctx.obj['chain_id'] = get_chain_id(default_rpc_url, override=chain_id)
|
||||
|
||||
@marketplace.command()
|
||||
@click.argument('chain_id')
|
||||
|
||||
@@ -102,8 +102,9 @@ def _load_wallet(wallet_path: Path, wallet_name: str) -> Dict[str, Any]:
|
||||
"--wallet-path", help="Direct path to wallet file (overrides --wallet-name)"
|
||||
)
|
||||
@click.option("--use-daemon", is_flag=True, default=True, help="Use wallet daemon for operations")
|
||||
@click.option("--chain-id", help="Chain ID for multichain operations (e.g., ait-mainnet, ait-devnet)")
|
||||
@click.pass_context
|
||||
def wallet(ctx, wallet_name: Optional[str], wallet_path: Optional[str], use_daemon: bool):
|
||||
def wallet(ctx, wallet_name: Optional[str], wallet_path: Optional[str], use_daemon: bool, chain_id: Optional[str]):
|
||||
"""Manage your AITBC wallets and transactions"""
|
||||
# Ensure wallet object exists
|
||||
ctx.ensure_object(dict)
|
||||
@@ -111,6 +112,12 @@ def wallet(ctx, wallet_name: Optional[str], wallet_path: Optional[str], use_daem
|
||||
# Set daemon mode
|
||||
ctx.obj["use_daemon"] = use_daemon
|
||||
|
||||
# Handle chain_id with auto-detection
|
||||
from ..utils.chain_id import get_chain_id
|
||||
config = get_config()
|
||||
default_rpc_url = config.blockchain_rpc_url if hasattr(config, 'blockchain_rpc_url') else 'http://localhost:8006'
|
||||
ctx.obj["chain_id"] = get_chain_id(default_rpc_url, override=chain_id)
|
||||
|
||||
# Initialize dual-mode adapter
|
||||
from ..config import get_config
|
||||
import sys
|
||||
@@ -532,7 +539,8 @@ def balance(ctx):
|
||||
base_url=config.coordinator_url.replace('/api', ''),
|
||||
timeout=5
|
||||
)
|
||||
blockchain_balance = http_client.get(f"/rpc/balance/{wallet_data['address']}")
|
||||
chain_id = ctx.obj.get("chain_id", "ait-mainnet")
|
||||
blockchain_balance = http_client.get(f"/rpc/balance/{wallet_data['address']}?chain_id={chain_id}")
|
||||
output(
|
||||
{
|
||||
"wallet": wallet_name,
|
||||
|
||||
@@ -30,6 +30,9 @@ class CLIConfig(BaseAITBCConfig):
|
||||
wallet_url: str = Field(default="http://localhost:8003", description="Wallet daemon URL (alias for compatibility)")
|
||||
blockchain_rpc_url: str = Field(default=f"http://localhost:{BLOCKCHAIN_RPC_PORT}", description="Blockchain RPC URL")
|
||||
|
||||
# Chain configuration
|
||||
chain_id: str = Field(default="ait-mainnet", description="Default chain ID for multichain operations")
|
||||
|
||||
# Authentication
|
||||
api_key: Optional[str] = Field(default=None, description="API key for authentication")
|
||||
|
||||
|
||||
78
cli/aitbc_cli/utils/chain_id.py
Normal file
78
cli/aitbc_cli/utils/chain_id.py
Normal file
@@ -0,0 +1,78 @@
|
||||
"""Chain ID utilities for AITBC CLI
|
||||
|
||||
This module provides functions for auto-detecting and validating chain IDs
|
||||
from blockchain nodes, supporting multichain operations.
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
from aitbc import AITBCHTTPClient, NetworkError
|
||||
|
||||
|
||||
# Known chain IDs
|
||||
KNOWN_CHAINS = ["ait-mainnet", "ait-devnet", "ait-testnet", "ait-healthchain"]
|
||||
|
||||
|
||||
def get_default_chain_id() -> str:
|
||||
"""Return the default chain ID (ait-mainnet for production)."""
|
||||
return "ait-mainnet"
|
||||
|
||||
|
||||
def validate_chain_id(chain_id: str) -> bool:
|
||||
"""Validate a chain ID against known chains.
|
||||
|
||||
Args:
|
||||
chain_id: The chain ID to validate
|
||||
|
||||
Returns:
|
||||
True if the chain ID is known, False otherwise
|
||||
"""
|
||||
return chain_id in KNOWN_CHAINS
|
||||
|
||||
|
||||
def get_chain_id_from_health(rpc_url: str, timeout: int = 5) -> str:
|
||||
"""Auto-detect chain ID from blockchain node's /health endpoint.
|
||||
|
||||
Args:
|
||||
rpc_url: The blockchain node RPC URL (e.g., http://localhost:8006)
|
||||
timeout: Request timeout in seconds
|
||||
|
||||
Returns:
|
||||
The detected chain ID, or default if detection fails
|
||||
"""
|
||||
try:
|
||||
http_client = AITBCHTTPClient(base_url=rpc_url, timeout=timeout)
|
||||
health_data = http_client.get("/health")
|
||||
supported_chains = health_data.get("supported_chains", [])
|
||||
|
||||
if supported_chains:
|
||||
# Return the first supported chain (typically the primary chain)
|
||||
return supported_chains[0]
|
||||
except NetworkError:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Fallback to default if detection fails
|
||||
return get_default_chain_id()
|
||||
|
||||
|
||||
def get_chain_id(rpc_url: str, override: Optional[str] = None, timeout: int = 5) -> str:
|
||||
"""Get chain ID with override support and auto-detection fallback.
|
||||
|
||||
Args:
|
||||
rpc_url: The blockchain node RPC URL
|
||||
override: Optional chain ID override (e.g., from --chain-id flag)
|
||||
timeout: Request timeout in seconds
|
||||
|
||||
Returns:
|
||||
The chain ID to use (override takes precedence, then auto-detection, then default)
|
||||
"""
|
||||
# If override is provided, validate and use it
|
||||
if override:
|
||||
if validate_chain_id(override):
|
||||
return override
|
||||
# If unknown, still use it (user may be testing new chains)
|
||||
return override
|
||||
|
||||
# Otherwise, auto-detect from health endpoint
|
||||
return get_chain_id_from_health(rpc_url, timeout)
|
||||
Reference in New Issue
Block a user