Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Has been cancelled
Deploy to Testnet / deploy-testnet (push) Has been cancelled
Documentation Validation / validate-docs (push) Has been cancelled
Documentation Validation / validate-policies-strict (push) Has been cancelled
Multi-Node Stress Testing / stress-test (push) Has been cancelled
Node Failover Simulation / failover-test (push) Has been cancelled
Integration Tests / test-service-integration (push) Has been cancelled
Security Scanning / security-scan (push) Has been cancelled
Python Tests / test-python (push) Has been cancelled
CLI Tests / test-cli (push) Has been cancelled
Blockchain Synchronization Verification / sync-verification (push) Successful in 11s
Contract Performance Benchmarks / benchmark-gas-usage (push) Successful in 1m36s
Contract Performance Benchmarks / benchmark-execution-time (push) Successful in 1m24s
Contract Performance Benchmarks / benchmark-throughput (push) Successful in 1m25s
Cross-Chain Functionality Tests / test-cross-chain-sync (push) Successful in 2s
Cross-Chain Functionality Tests / test-cross-chain-transactions (push) Successful in 5s
Cross-Chain Functionality Tests / test-cross-chain-bridge (push) Has been skipped
Cross-Chain Functionality Tests / test-multi-chain-consensus (push) Successful in 3s
Cross-Chain Functionality Tests / aggregate-results (push) Has been skipped
Multi-Chain Island Architecture Tests / test-multi-chain-island (push) Successful in 2s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 3s
P2P Network Verification / p2p-verification (push) Successful in 2s
Smart Contract Tests / test-solidity (map[name:aitbc-contracts path:contracts]) (push) Failing after 1m28s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 21s
Smart Contract Tests / test-foundry (push) Failing after 20s
Smart Contract Tests / lint-solidity (push) Successful in 30s
Smart Contract Tests / deploy-contracts (push) Successful in 1m40s
Systemd Sync / sync-systemd (push) Successful in 26s
Contract Performance Benchmarks / compare-benchmarks (push) Successful in 4s
- Update workflow paths from docs/openclaw to docs/hermes - Rename skill prefixes from openclaw-* to hermes-* - Update agent skill references in refactoring and analysis docs - Rename OPENCLAW_AITBC_MASTERY_PLAN.md to reflect hermes branding - Update CLI examples and command references throughout documentation
77 lines
3.5 KiB
Python
77 lines
3.5 KiB
Python
"""Configuration module for AITBC CLI"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
from pydantic import Field
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
from aitbc.config import BaseAITBCConfig
|
|
from aitbc.constants import BLOCKCHAIN_RPC_PORT, BLOCKCHAIN_P2P_PORT
|
|
|
|
|
|
class CLIConfig(BaseAITBCConfig):
|
|
"""CLI-specific configuration inheriting from shared BaseAITBCConfig"""
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=str(Path("/etc/aitbc/.env")),
|
|
env_file_encoding="utf-8",
|
|
case_sensitive=False,
|
|
extra="ignore"
|
|
)
|
|
|
|
# CLI-specific settings
|
|
app_name: str = Field(default="AITBC CLI", description="CLI application name")
|
|
app_version: str = Field(default="2.1.0", description="CLI version")
|
|
|
|
# Service URLs
|
|
gpu_service_url: str = Field(default="http://localhost:8101", description="GPU Service URL")
|
|
marketplace_service_url: str = Field(default="http://localhost:8102", description="Marketplace Service URL")
|
|
trading_service_url: str = Field(default="http://localhost:8104", description="Trading Service URL")
|
|
governance_service_url: str = Field(default="http://localhost:8105", description="Governance Service URL")
|
|
ai_service_url: str = Field(default="http://localhost:8106", description="AI Service URL")
|
|
monitoring_service_url: str = Field(default="http://localhost:8107", description="Monitoring Service URL")
|
|
hermes_service_url: str = Field(default="http://localhost:8108", description="hermes Service URL")
|
|
plugin_service_url: str = Field(default="http://localhost:8109", description="Plugin Service URL")
|
|
wallet_daemon_url: str = Field(default="http://localhost:8003", description="Wallet daemon URL")
|
|
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")
|
|
|
|
# Legacy coordinator URL (deprecated, kept for backward compatibility during migration)
|
|
coordinator_url: str = Field(default="http://localhost:8011", description="Coordinator API URL (deprecated)")
|
|
|
|
# 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")
|
|
|
|
# Request settings
|
|
timeout: int = Field(default=30, description="Request timeout in seconds")
|
|
|
|
# Config file path (for backward compatibility)
|
|
config_file: Optional[str] = Field(default=None, description="Path to config file")
|
|
|
|
|
|
def get_config(config_file: Optional[str] = None) -> CLIConfig:
|
|
"""Load CLI configuration from shared config system"""
|
|
# For backward compatibility, allow config_file override
|
|
if config_file:
|
|
config_path = Path(config_file)
|
|
if config_path.exists():
|
|
import yaml
|
|
with open(config_path) as f:
|
|
config_data = yaml.safe_load(f) or {}
|
|
|
|
# Override with config file values
|
|
return CLIConfig(
|
|
coordinator_url=config_data.get("coordinator_url", "http://localhost:8011"),
|
|
wallet_daemon_url=config_data.get("wallet_url", "http://localhost:8003"),
|
|
api_key=config_data.get("api_key"),
|
|
timeout=config_data.get("timeout", 30)
|
|
)
|
|
|
|
# Use shared config system with environment variables
|
|
return CLIConfig()
|
|
|