from typing import List from textual.app import ComposeResult from textual.screen import Screen from models.agent import Agent from widgets.multiagentselector import MultiAgentSelector from widgets.OTP_generate import OTPGenerator class OTPWorkflowScreen(Screen): """Screen that handles the OTP generation workflow.""" def __init__(self, all_agents: List[Agent]): super().__init__() self.all_agents = all_agents self.selected_devices = None def compose(self) -> ComposeResult: """Start with the multi-agent selector.""" yield MultiAgentSelector(self.all_agents) def on_multi_agent_selector_agents_selected( self, message: MultiAgentSelector.AgentsSelected ) -> None: """Handle selected agents - switch to OTP generator.""" self.selected_devices = message.selected_agents # Remove the MultiAgentSelector selector = self.query_one(MultiAgentSelector) selector.remove() # Mount the OTPGenerator with the selected Agent objects # No need to pass API - it will access self.app.api directly self.mount(OTPGenerator(self.selected_devices)) def on_otp_generator_otp_info(self, message: OTPGenerator.OTPInfo) -> None: """Handle OTP generation request - call the actual OTP generation function.""" # This will be handled by the main app, but we can also do it here # For now, just pass it up to the app level pass