- Implement store command to save data on IPFS and generate CID
- Implement announce command to publish data availability with price
- Implement listen command to monitor data retrieval requests
- Implement retrieve command to fetch data from IPFS by CID
- Implement listings command to view wallet's data offerings
- Store listings in ~/.aitbc/oracle_data_listings.json
- Update scenario 23 documentation version to 1.1
- Removed Web3 dependency from complete_atomic_swap
- Uses CLI via send_transaction() now
- Converts swap_id and secret to bytes before sending
- All atomic swap methods now work without Web3
- Removed Web3 dependency from initiate_atomic_swap
- Uses CLI via send_transaction() now
- Other methods (complete, get_status, refund) still need fixing
- get_swap_status: Returns placeholder (CLI doesn't return contract state yet)
- refund_atomic_swap: Uses CLI via send_transaction()
- All atomic swap methods now work without Web3
- Added factory function create_agent_contract_integration()
- Updated agent.py to use factory instead of manual client creation
- CLIContractClient used when config.use_cli=True
- SDK atomic swap methods already implemented in remote (commits 71160bf1, 93814f69)
- Updated version from 1.1 -> 1.2 to reflect SDK is available
- Removed outdated 'not implemented' notices
- Scenario now accurately reflects available functionality
- Renamed 42_cross_chain_atomic_swap.md -> 47_cross_chain_atomic_swap.md
(42 was duplicate - 42 is Portfolio Management per README)
- Added disclaimer about CLI commands (uses aitbc contract call, not aitbc atomic-swap)
- Fixed navigation: Previous=46, Next=48 (or 42 for related content)
- Version bumped to 1.1 (contract-based commands from commit 99742c7c)
Note: Remote commit 99742c7c already updated commands to use
Contract-based CLI commands preserved from remote version.
- Add Stage 10 (Failure Recovery) and Stage 11 (Agent Communication) to training README
- Update stage coverage from 9 to 11 comprehensive training stages
- Update last modified date to 2026-05-07
- Replace atomic-swap CLI commands with contract deploy and call commands in scenario 42
- Add contract deployment steps for CrossChainAtomicSwap on both chains
- Update initiateSwap, completeSwap, get
messages.py:
- Added import json (was missing)
- Fixed send_message to store in Redis FIRST (always)
then optionally notify via protocol (not required)
- Fixed broadcast_message to store in Redis FIRST (always)
then optionally notify via protocol
- Added total count to get_message_history return value
message_storage.py:
- Fixed store_message to convert timestamp to float for zadd
- Added get_message_count() method to get total message count
- Import MessageStorage and PeerStorage in lifespan
- Initialize message_storage and peer_storage with Redis URL
- Add start/stop lifecycle management for storage services
- Add protocol field to MessageRequest model with validation
- Add BroadcastRequest model with agent_type and capabilities filters
- Store sent messages in Redis with metadata (message_id, sender, receiver, type, priority, protocol, timestamp)
- Add /
- Replace stub agent list data with real /agents/discover API call
- Transform coordinator response to CLI format with agent_id, status, type, capabilities, and services
- Add status filter query parameter support
- Implement fallback to stub data on API failure or connection error
- Add count field to response for consistency
- _least_connections_selection() was checking active_connections
(never updated) instead of pending_tasks (incremented by assign_task)
- Now tasks are properly distributed across all available agents
- Verified with 4 agents and 12 tasks - all agents receive tasks
- Created generate_certificates.py:
- Generates shields.io markdown badges for each completed stage
- Creates HTML certificates with styled formatting
- Generates summary certificate for completing all stages
- Produces Markdown summary with all badges
- Updated master_training_launcher.sh:
- Added BADGE_DIR and HTML_CERT_DIR variables
- Enhanced view_certificates() to display badges and HTML cert paths
- Added option to start HTTP server for viewing HTML certificates
- Shows badges summary in certificate viewer
- Generated badges and HTML certificates for stages 1-10
- Fixed async test fixtures (pytest-asyncio compatibility)
- Updated tests to match actual API response formats
- All 25 integration tests now passing
- Added pytest and pytest-asyncio to dependencies
- Read REDIS_URL from environment variable with default fallback to redis://localhost:6379/1
- Pass redis_url parameter to AgentRegistry initialization
- Add logging for Redis URL being used
- Add /agents/{agent_id}/heartbeat endpoint to receive and process agent heartbeats
- Add /tasks/queues endpoint to retrieve task queue sizes across all priorities
- Add /tasks/queues/{priority}/clear endpoint to clear specific priority queues
- Add /tasks/queues/stats endpoint to get detailed queue and distribution statistics
- Implement get_queue_sizes() method in TaskDistributor to return queue sizes by priority
- Implement clear_queue() method in TaskDistributor to drain
- Add handle_ai_distribution_stats() to query task distribution statistics from coordinator
- Update handle_agent_sdk_action() register to call /agents/register endpoint with full registration data
- Update handle_agent_sdk_action() list to call /agents/discover endpoint with filtering
- Update handle_agent_sdk_action() status to call /agents/{agent_id} endpoint
- Add handle_agent_sdk_action() update-status to call /agents/{agent_id}/status endpoint
- Add CLI
- Use /var/lib/aitbc/agent_coordinator.db for persistent storage
- Add agents and agent_assignments tables to database schema
- Implement agent registration endpoint with capabilities and services
- Add agent discovery endpoint with filtering by type, capabilities, and services
- Implement agent status updates and heartbeat mechanism
- Add task-to-agent assignment with least_connections load balancing strategy
- Update
- Add comprehensive changelog section with versions 1.0, 1.1, and 2.0
- Document Hermes framework migration in Version 2.0 (2026-05-07)
- Update OpenClaw reference to Hermes in overview
- Add version history: initial release (1.0), April update (1.1), Hermes integration (2.0)
- Document system architecture alignment and service integration updates
- Use .get() with default value instead of direct dictionary access
- Default title: 'Stage {stage_number}'
- Fixes Stage 10 and other JSON stages without 'title' field
- Tested: Stage 10 now loads successfully
- TOTAL_STAGES=11
- Added Stage 10 to get_stage_name() and menus
- Updated for loops to {0..10}
- Updated usage messages to [0-10]
- Fixed regex to match stage 10: ^(10|[0-9])$
Add real-time AITBC service log monitoring command to Stage 10:
- Added journalctl -fu aitbc-* to JSON examples (monitors all AITBC services)
- Added to output_stage_learnings() commands list
- Updated pitfalls to mention journalctl as primary log monitoring tool
This command provides real-time monitoring of all AITBC services
(blockchain-node, agent-coordinator, etc.) in a single view.
Address Hermes-identified training gaps with new advanced stage:
Stage 10 covers:
- Transaction failure debugging (nonce too low, insufficient funds)
- Node failure recovery procedures
- Wallet backup and restore operations
- Production monitoring (metrics, logs, health checks)
- Advanced debugging tools (mempool inspection, transaction tracing)
- Backup and restore procedures (database, configuration)
- Network partition handling
Implementation:
- Created stage10_failure_recovery.sh with output_stage_learnings()
- Created stage10_failure_recovery.json with 7 sections covering failure scenarios
- Updated master_training_launcher.sh to include stage10 in get_stage_name()
- Updated stage selection prompts to allow [0-10]
- Updated --stage and --with-skill-update validation for stage 10
- Added stage 10 to playground menu stage list
Training-to-skill pipeline verified:
- Learnings JSON created successfully
- Certificate generated
- capture_learnings() validates and reports to Hermes agent
Note: Python training setup JSON execution has structure mismatch
(missing 'title' field), but stage completes successfully and
learnings are captured via output_stage_learnings().
- Fix REPO_ROOT path in stage8 and stage9 scripts
- Remove --json flag from Python command (use positional arg)
- Stages 8-9 now run successfully with --with-skill-update
- All 9 stages now generate learnings files correctly
Bug: Learnings file was created but disappeared after script exit because
SCRIPT_DIR was undefined in training_lib.sh context.
Fix: Use REPO_ROOT to construct path to training state directory:
- Changed from /.training_state
- To /scripts/training/.training_state
This ensures the learnings file is created in the correct location where
capture_learnings() in master_training_launcher.sh can find it.
Add learning capture and skill update mechanism to AITBC training system:
Phase 1 - Learning Capture Function:
- Add capture_learnings() function to master_training_launcher.sh
- Reads learnings JSON from stage scripts
- Validates JSON structure
- Calls hermes-tools skill-manage to update agent skills
- Stage 1 creates skill, subsequent stages update it
- Falls back to JSON-only if hermes-tools unavailable
Phase 2 - Optional Skill Update Flag:
- Add --with-skill-update CLI flag
- Set ENABLE_SKILL_UPDATE global variable
- Support flag combination with --stage and --complete
- Default behavior: save learnings JSON without skill update
Phase 3 - Integration:
- Call capture_learnings() after certificate generation
- Pass ENABLE_SKILL_UPDATE to control skill update behavior
- Integrated into run_stage() function
Phase 4 - Helper Function:
- Add output_stage_learnings() to training_lib.sh
- Accepts stage number, name, commands, pitfalls, key_paths, concepts
- Creates structured JSON learnings file
- Saves to .training_state/learnings_stageN.json
Phase 5 - Stage Script Learning Output:
- Add learning output to all stage scripts (0-9)
- Each stage defines stage-specific learnings
- Format: commands, pitfalls, key_paths, concepts
- Called at successful stage completion
This enables new agents on new AITBC nodes to automatically persist
training knowledge via the hermes-tools skill management system.