- Auto-update existing repository via git pull instead of prompting
- Prevent script from hanging on existing directory
- Allow non-automated deployment in containers
- Add deployment script for integrated blockchain node with mempool support
- Create comprehensive setup documentation from scratch
- Add agent workflow for automated deployment
- Support both bare metal and container deployments
- Include verification steps and troubleshooting guide
- Provide configuration templates for hub and follower nodes
- Document differences between integrated and standalone blockchain nodes
- Clarify which implementation has mempool endpoint support
- Provide deployment recommendations for each use case
- Add troubleshooting guide for mempool endpoint issues
- Include migration guide from standalone to integrated implementation
- Add import os for environment variable support
- Change env_file from /etc/aitbc/.env to /etc/aitbc/blockchain.env (standard)
- Make gossip_broadcast_url configurable via GOSSIP_BROADCAST_URL env var
- Add cross_site_remote_endpoints configuration via CROSS_SITE_REMOTE_ENDPOINTS env var
- Remove hardcoded URLs and IPs from source code
- Align local codebase with container configuration
- Added ns3 node documentation with IP 95.216.198.140
- Updated multi-node operations to include ns3
- Added ns3-specific command examples for environment checks
- Update package names from aitbc-ai-service to aitbc-ai
- Update package names from aitbc-edge-api to aitbc-edge
- Reflect the actual final package names implemented in the release
- Renamed aitbc-ai-service to aitbc-ai
- Renamed aitbc-edge-api to aitbc-edge
- Updated pyproject.toml files with new package names
- Renamed directories and package modules
- Updated references in documentation and scripts
- Updated systemd service references
- Renamed ai-service to aitbc-ai-service
- Renamed edge-api to aitbc-edge-api
- Updated pyproject.toml files with new package names
- Renamed directories and package modules
- Updated references in documentation and scripts
- All internal packages now follow aitbc- naming convention
- Update idna from 3.13 to 3.15 (fixes CVE-2026-45409)
- Update ujson from 5.12.0 to 5.12.1 (fixes CVE-2026-44660)
- Update urllib3 from 2.6.3 to 2.7.0 (fixes CVE-2026-44431, CVE-2026-44432)
- Remove vllm (transitive dependency causing diskcache vulnerability)
- Remove diskcache (CVE-2025-69872 - no longer required)
- Update requirements.txt with secure dependency versions
All vulnerabilities now resolved: pip-audit shows no known vulnerabilities found
- Added format and title parameters to output() function in utils/__init__.py
- Handle format='json'/'yaml' for structured data output
- Display optional title with underline separator when provided
- Fixed import in dual_mode_wallet_adapter.py from config.Config to aitbc_cli.config.CLIConfig
Renamed cli/config/ directory to cli/config_data/ to prevent package
shadowing of cli/aitbc_cli/config.py module. Removed problematic
sys.modules manipulation in aitbc_cli/__init__.py that was causing
circular import issues. Now 'from aitbc_cli.config import CLIConfig' works correctly.
- Add get_join_instructions() function that generates structured join data
- Include environment variables, config files, P2P config, RPC config sections
- Add route handlers for /agent/join/{chain_id}.json (FastAPI and Flask)
- Update discovery endpoint to include join endpoint in agent APIs
- Add nginx proxy configuration for /agent/join/ path
- S05 Islands: edge.py list_islands now has name='list' for 'aitbc edge island list'
- S06 Market: output() now handles structured data (dict/list) by JSON-encoding
- S09 GPU: added safe_load_credentials() to gpu_marketplace.py and exchange_island.py
with graceful FileNotFoundError handling and helpful error message
- S13 Mining: added 'list' subcommand to mining.py for listing active miners
- Deleted chains.json, discovery.json, islands.json static configuration files
- Removed /agent/join/ait-mainnet.json configuration guide
- Updated index.html to show only mainnet island, removed testnet card
- Changed note from "Agent-First Design" to "Live Data Only" emphasizing real-time RPC queries
- Added "Live data from RPC" indicator to mainnet island card
- All agent endpoints now serve dynamic data from blockchain
- Removed ait-testnet from chains.json, discovery.json, and islands.json
- Deleted /agent/join/ait-testnet.json configuration guide
- Updated metadata counts from 2 to 1 active chain/island
- Added notes clarifying this node (aitbc) is HUB for mainnet only
- Updated index.html title and description to reflect mainnet hub role
- Removed testnet join section from homepage, kept only mainnet join guide
- Changed "Multi-island architecture" to "Federated multi-node architecture"
Config was used as a type annotation in WalletDaemonClient.__init__ but
never imported, causing NameError at class definition time. Fixed by
importing Config under TYPE_CHECKING guard and using string annotation
'Config' to defer resolution to type-checkers only.
- importBlock now returns 400 'Parent block not found' when parent_hash
is not in the DB (skipped for genesis height 1)
- AITBCHTTPClient._retry_request now immediately re-raises HTTPError for
4xx responses instead of retrying - fixes RetryError wrapping 400/409
in test_block_import_complete
- Changed genesis block timestamp from hardcoded 2025-01-01 to datetime.now(timezone.utc)
- Fixes unified_genesis.py, poa.py genesis creation, and fallback genesis timestamp
- Fixed lambda closure bugs in session_factory by capturing chain_id with default parameter
- Removed localhost:8006 from default bootstrap peers (hub nodes create own genesis)
- Updated comments to reflect genesis timestamp change from deterministic to current time
- Validate block hash is 0x + 64 hex chars; return 400 for invalid format
- Fixes test_block_import and test_block_import_complete CI failures
- Update test_block_import_complete Test 2 to expect 400 (invalid hash format)
instead of 409 (conflict); invalid hash is now rejected before DB lookup
- Move re import to top of router.py
- Replace systemd-based service startup (broken on gitea-runner) with
direct uvicorn launches from the cloned workspace
- Remove stale ports 8001 (exchange, localhost-only) and 8003 (nonexistent)
- Only check ports 8011 (coordinator-api) and 8006 (blockchain-rpc)
- blockchain-rpc skipped if already running on host
- Move Python environment setup before service startup
- Wait up to 40s (20 retries x 2s) per service instead of 30s
- Try /health, /v1/health, /health/live, / paths for readiness
- gitea-runner lacks SSH access to aitbc1, causing false RPC unhealthy errors
- Replace ssh node 'curl http://localhost:PORT' with direct curl http://hostname:PORT
- All nodes (aitbc, aitbc1, gitea-runner) now use their hostnames for RPC checks
- Also fixes verify_consensus to use same direct HTTP pattern
- Added knowledge router import from contexts.knowledge.routers.knowledge
- Included router with /v1 prefix for API versioning consistency
- Added error handling and logging for router initialization
- Positioned before marketplace_offers router in initialization order
- Added /v1 prefix to all business logic routers in coordinator-api (analytics, portfolio, reputation, rewards, staking)
- Updated agent-coordinator to include /v1 prefix for all routers
- Changed agent-management API prefix from /api/v1 to /v1
- Updated api-gateway service prefixes to include /v1 for all proxied services
- Fixed coordinator-api routers to use correct service imports (AgentServiceMarketplace instead
- Changed bid_data provider from .get('wallet', 'unknown') to .get('wallet') or 'unknown'
- Ensures None values from get() are properly handled with fallback to 'unknown'
- Changed monitor.py job endpoints from /jobs to /v1/jobs
- Changed monitor.py miner endpoints from /miners to /v1/miners
- Changed operations.py agent discovery from /agents/discover to /v1/agents/discover
- Changed system.py agent endpoints from /agents/* to /v1/agents/*
- Updated agent status, registration, discovery, and retrieval endpoints
- Aligns CLI with coordinator-api versioning structure for business logic endpoints
- Changed all coordinator service port references from 9001 to 8011 in CI workflows
- Updated PYTHONPATH references from apps/agent-coordinator to apps/coordinator-api
- Renamed log files from agent-coordinator.log to coordinator-api.log
- Updated step names and comments to use "coordinator API" instead of "agent coordinator"
- Added API versioning documentation explaining /v1 prefix structure for business logic endpoints
- Documented CLI compatibility routes (/api/v1) and infrastructure endpoints (no prefix)
- Updated architecture
- Added in-memory state dictionaries (_mock_nodes, _mock_tasks, _mock_agents, _mock_messages, _mock_jobs)
- Updated swarm endpoints to persist and retrieve node/task data from mock state
- Updated hermes endpoints to persist and retrieve agent/message data from mock state
- Updated training endpoints to persist and retrieve job data from mock state
- Added auto-incrementing counters for task, message, and job IDs
- Fixed hermes message
- Added RegisterNodeRequest, ReportTaskRequest, CreateClusterRequest models
- Implemented POST /nodes/register endpoint for compute node registration
- Implemented POST /nodes/{node_id}/heartbeat endpoint for node health checks
- Implemented GET /nodes endpoint with status and capability filters
- Implemented GET /nodes/{node_id} endpoint for node details
- Implemented POST /tasks/submit endpoint for task submission
- Implemented POST
- Added balance tracker initialization in blockchain node startup
- Created CrossChainTransfer and Stake database models
- Implemented GET /accounts/{address} endpoint for account details
- Implemented POST /register-account endpoint for account creation
- Implemented POST /faucet endpoint with rate limiting (10/hour) and auto-account creation
- Implemented bridge endpoints:
- POST /bridge/lock to initiate cross-chain transfers
-
- Added MockFHEProvider class for testing without TenSEAL/Concrete ML
- Changed FHEService initialization to always have mock provider as default fallback
- Updated TenSEALProvider and ConcreteMLProvider to gracefully handle missing dependencies
- Added availability checks to all providers (self.available flag)
- Fixed type hints to use Optional and Dict for Python 3.9+ compatibility
- Fixed TenSEAL API calls (ckks_vector/bfv_vector instead of ckks_tensor/b