Promote bridge, demo, craft_client to core birdcage package

Move bridge.py, demo.py, craft_client.py from tui/src/birdcage_tui/ to
src/birdcage/ so both TUI and MCP server can share the device layer
without a circular dependency on textual.
This commit is contained in:
Ryan Malloy 2026-02-17 16:01:38 -07:00
parent 3013eeee4c
commit 16ca4892b3
7 changed files with 38 additions and 22 deletions

View file

@ -102,15 +102,14 @@ class BirdcageApp(App):
def _setup_device(self) -> None:
"""Create device (demo or real) and hand it to each screen."""
if self.demo_mode:
from birdcage_tui.demo import DemoDevice
from birdcage.demo import DemoDevice
self.device = DemoDevice()
self.device.connect()
else:
from birdcage.bridge import SerialBridge
from birdcage.protocol import get_protocol
from birdcage_tui.bridge import SerialBridge
protocol = get_protocol(self.firmware_name)
self.device = SerialBridge(protocol)
self.device.connect(self.serial_port)
@ -142,11 +141,11 @@ class BirdcageApp(App):
def _setup_craft_client(self) -> None:
"""Create a Craft API client and hand it to the control screen."""
if self.demo_mode:
from birdcage_tui.demo import DemoCraftClient
from birdcage.demo import DemoCraftClient
client = DemoCraftClient()
else:
from birdcage_tui.craft_client import CraftClient
from birdcage.craft_client import CraftClient
client = CraftClient(base_url=self.craft_url)
try: