Coverage for integrations / agent_engine / federation_tools.py: 60.9%
23 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-12 04:49 +0000
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-12 04:49 +0000
1"""
2Unified Agent Goal Engine - Federation AutoGen Tools
44 tools for the federation goal type. Follows ip_protection_tools.py pattern.
5"""
8def check_federation_convergence() -> dict:
9 """Check convergence score across federated nodes.
11 Returns convergence score (0-1), epoch count, and peer count.
12 Higher = more synchronized learning across the network.
13 """
14 try:
15 from .federated_aggregator import get_federated_aggregator
16 agg = get_federated_aggregator()
17 stats = agg.get_stats()
18 return {
19 'success': True,
20 'convergence': stats['convergence'],
21 'epoch': stats['epoch'],
22 'peer_count': stats['peer_count'],
23 'trend': stats['convergence_history'],
24 }
25 except Exception as e:
26 return {'success': False, 'error': str(e)}
29def get_federation_stats() -> dict:
30 """Get detailed federation statistics for dashboard.
32 Returns peer count, epoch, convergence, and last aggregated metrics.
33 """
34 try:
35 from .federated_aggregator import get_federated_aggregator
36 return {'success': True, 'stats': get_federated_aggregator().get_stats()}
37 except Exception as e:
38 return {'success': False, 'error': str(e)}
41def trigger_federation_sync() -> dict:
42 """Manually trigger a federation sync cycle.
44 Runs extract → broadcast → aggregate → apply → track.
45 """
46 try:
47 from .federated_aggregator import get_federated_aggregator
48 result = get_federated_aggregator().tick()
49 return {'success': True, **result}
50 except Exception as e:
51 return {'success': False, 'error': str(e)}
54def get_peer_learning_health() -> dict:
55 """Get learning health status across all federated peers.
57 Reports per-peer flush rates, skill distribution, and HiveMind activity.
58 """
59 try:
60 from .federated_aggregator import get_federated_aggregator
61 agg = get_federated_aggregator()
62 stats = agg.get_stats()
63 aggregated = stats.get('last_aggregated') or {}
64 return {
65 'success': True,
66 'peer_count': stats['peer_count'],
67 'network_experience': aggregated.get('experience_stats', {}),
68 'network_ralt': aggregated.get('ralt_stats', {}),
69 'network_hivemind': aggregated.get('hivemind_state', {}),
70 'network_quality': aggregated.get('quality_metrics', {}),
71 }
72 except Exception as e:
73 return {'success': False, 'error': str(e)}
76# Tool descriptors for AutoGen registration
77FEDERATION_TOOLS = [
78 {
79 'name': 'check_federation_convergence',
80 'description': 'Check convergence score across federated learning nodes.',
81 'function': check_federation_convergence,
82 },
83 {
84 'name': 'get_federation_stats',
85 'description': 'Get detailed federation statistics for dashboard.',
86 'function': get_federation_stats,
87 },
88 {
89 'name': 'trigger_federation_sync',
90 'description': 'Manually trigger a federation sync cycle.',
91 'function': trigger_federation_sync,
92 },
93 {
94 'name': 'get_peer_learning_health',
95 'description': 'Get learning health status across all federated peers.',
96 'function': get_peer_learning_health,
97 },
98]