Coverage for integrations / blueprint_registry.py: 0.0%
37 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"""
2Blueprint Registry — Single entry point for registering all HARTOS blueprints.
4Both Nunba (main.py, direct mode) and standalone (hart_intelligence_entry.py)
5call register_all_blueprints(app) to get every endpoint wired.
7Each registration is try/except guarded — missing dependencies are logged
8and skipped. The app starts with whatever is available.
9"""
10import logging
12logger = logging.getLogger('hevolve.blueprints')
15def register_all_blueprints(app) -> dict:
16 """Register all HARTOS blueprints on a Flask app.
18 Returns:
19 Dict with 'registered' (list of names) and 'skipped' (list of names).
20 """
21 registered = []
22 skipped = []
24 # Collect already-registered blueprint names to avoid collisions
25 existing_bp_names = {bp.name for bp in app.blueprints.values()} if hasattr(app, 'blueprints') else set()
27 def _try_register(name: str, import_fn):
28 try:
29 bp = import_fn()
30 if bp is None:
31 skipped.append(name)
32 logger.debug("Blueprint returned None: %s", name)
33 return
34 # Skip if already registered (avoids duplicate name errors)
35 bp_name = getattr(bp, 'name', name)
36 if bp_name in existing_bp_names:
37 skipped.append(name)
38 logger.debug("Blueprint already registered, skipping: %s", bp_name)
39 return
40 app.register_blueprint(bp)
41 existing_bp_names.add(bp_name)
42 registered.append(name)
43 logger.info("Registered blueprint: %s", name)
44 except ImportError as e:
45 skipped.append(name)
46 logger.debug("Blueprint import failed (%s): %s", name, e)
47 except Exception as e:
48 skipped.append(name)
49 logger.warning("Blueprint init failed (%s): %s", name, e)
51 # ── Hive Session ──
52 _try_register('hive_session', lambda: (
53 __import__('integrations.coding_agent.claude_hive_session',
54 fromlist=['create_hive_session_blueprint'])
55 .create_hive_session_blueprint()
56 ))
58 # ── Hive Signal Bridge ──
59 _try_register('hive_signals', lambda: (
60 __import__('integrations.channels.hive_signal_bridge',
61 fromlist=['create_signal_blueprint'])
62 .create_signal_blueprint()
63 ))
65 # ── Benchmark Prover ──
66 _try_register('benchmark_prover', lambda: (
67 __import__('integrations.agent_engine.hive_benchmark_prover',
68 fromlist=['create_benchmark_blueprint'])
69 .create_benchmark_blueprint()
70 ))
72 # ── App Marketplace ──
73 _try_register('marketplace', lambda: (
74 __import__('integrations.agent_engine.app_marketplace',
75 fromlist=['marketplace_bp'])
76 .marketplace_bp
77 ))
79 # ── Robotics Hardware Bridge ──
80 _try_register('robotics', lambda: (
81 __import__('integrations.robotics.hardware_bridge',
82 fromlist=['create_robotics_blueprint'])
83 .create_robotics_blueprint()
84 ))
86 # ── Robot Intelligence API ──
87 # Canonical routes at /api/robotics/ai/* via robot_intelligence_bp
88 # (registered directly in hart_intelligence_entry.py). The previous
89 # create_intelligence_blueprint() entry was a duplicate /api/robotics/
90 # intelligence/{think,robots} subset — removed 2026-04-15.
92 # ── Compute Optimizer ──
93 def _register_optimizer():
94 mod = __import__('core.compute_optimizer',
95 fromlist=['create_optimizer_blueprint', 'get_optimizer'])
96 bp = mod.create_optimizer_blueprint()
97 if bp:
98 # Start optimizer in background (event-driven, zero overhead when idle)
99 try:
100 mod.get_optimizer().start()
101 except Exception:
102 pass
103 return bp
104 _try_register('compute_optimizer', _register_optimizer)
106 logger.info(
107 "Blueprint registry: %d registered, %d skipped",
108 len(registered), len(skipped),
109 )
110 return {'registered': registered, 'skipped': skipped}