SYMBOL INDEX (7039 symbols across 420 files) FILE: aip/endpoints/base.py class AIPEndpoint (line 18) | class AIPEndpoint(ABC): method __init__ (line 33) | def __init__( method start (line 59) | async def start(self) -> None: method stop (line 68) | async def stop(self) -> None: method handle_message (line 77) | async def handle_message(self, msg: Any) -> None: method is_connected (line 85) | def is_connected(self) -> bool: method send_with_timeout (line 93) | async def send_with_timeout( method receive_with_timeout (line 106) | async def receive_with_timeout( method reconnect_device (line 121) | async def reconnect_device(self, device_id: str) -> bool: method cancel_device_tasks (line 131) | async def cancel_device_tasks(self, device_id: str, reason: str) -> None: method on_device_disconnected (line 141) | async def on_device_disconnected(self, device_id: str) -> None: FILE: aip/endpoints/client_endpoint.py class DeviceClientEndpoint (line 19) | class DeviceClientEndpoint(AIPEndpoint): method __init__ (line 27) | def __init__( method start (line 78) | async def start(self) -> None: method stop (line 94) | async def stop(self) -> None: method handle_message (line 108) | async def handle_message(self, msg: Any) -> None: method reconnect_device (line 117) | async def reconnect_device(self, device_id: str) -> bool: method cancel_device_tasks (line 131) | async def cancel_device_tasks(self, device_id: str, reason: str) -> None: method on_device_disconnected (line 141) | async def on_device_disconnected(self, device_id: str) -> None: method is_connected (line 149) | def is_connected(self) -> bool: FILE: aip/endpoints/constellation_endpoint.py class ConstellationEndpoint (line 19) | class ConstellationEndpoint(AIPEndpoint): method __init__ (line 26) | def __init__( method start (line 66) | async def start(self) -> None: method stop (line 70) | async def stop(self) -> None: method connect_to_device (line 76) | async def connect_to_device( method send_task_to_device (line 89) | async def send_task_to_device(self, device_id: str, task_request: Any)... method request_device_info (line 101) | async def request_device_info(self, device_id: str) -> Optional[Dict[s... method disconnect_device (line 110) | async def disconnect_device(self, device_id: str) -> None: method is_device_connected (line 118) | def is_device_connected(self, device_id: str) -> bool: method handle_message (line 127) | async def handle_message(self, msg: Any) -> None: method reconnect_device (line 137) | async def reconnect_device(self, device_id: str) -> bool: method cancel_device_tasks (line 153) | async def cancel_device_tasks(self, device_id: str, reason: str) -> None: method on_device_disconnected (line 164) | async def on_device_disconnected(self, device_id: str) -> None: FILE: aip/endpoints/server_endpoint.py class DeviceServerEndpoint (line 21) | class DeviceServerEndpoint(AIPEndpoint): method __init__ (line 29) | def __init__( method start (line 66) | async def start(self) -> None: method stop (line 74) | async def stop(self) -> None: method handle_websocket (line 78) | async def handle_websocket(self, websocket: WebSocket) -> None: method handle_message (line 88) | async def handle_message(self, msg: Any) -> None: method reconnect_device (line 97) | async def reconnect_device(self, device_id: str) -> bool: method cancel_device_tasks (line 107) | async def cancel_device_tasks(self, device_id: str, reason: str) -> None: method on_device_disconnected (line 121) | async def on_device_disconnected(self, device_id: str) -> None: FILE: aip/extensions/base.py class AIPExtension (line 14) | class AIPExtension(ABC): method on_message_sent (line 23) | async def on_message_sent(self, msg: Any) -> None: method on_message_received (line 32) | async def on_message_received(self, msg: Any) -> None: method on_connection_established (line 41) | async def on_connection_established(self, endpoint_id: str) -> None: method on_connection_closed (line 50) | async def on_connection_closed(self, endpoint_id: str) -> None: method on_error (line 59) | async def on_error(self, error: Exception, context: str) -> None: FILE: aip/extensions/middleware.py class LoggingExtension (line 17) | class LoggingExtension(AIPExtension): method __init__ (line 22) | def __init__(self, log_level: int = logging.INFO): method on_message_sent (line 31) | async def on_message_sent(self, msg: Any) -> None: method on_message_received (line 36) | async def on_message_received(self, msg: Any) -> None: method on_connection_established (line 41) | async def on_connection_established(self, endpoint_id: str) -> None: method on_connection_closed (line 45) | async def on_connection_closed(self, endpoint_id: str) -> None: method on_error (line 49) | async def on_error(self, error: Exception, context: str) -> None: class MetricsExtension (line 54) | class MetricsExtension(AIPExtension): method __init__ (line 59) | def __init__(self): method on_message_sent (line 73) | async def on_message_sent(self, msg: Any) -> None: method on_message_received (line 86) | async def on_message_received(self, msg: Any) -> None: method on_connection_established (line 97) | async def on_connection_established(self, endpoint_id: str) -> None: method on_connection_closed (line 101) | async def on_connection_closed(self, endpoint_id: str) -> None: method on_error (line 105) | async def on_error(self, error: Exception, context: str) -> None: method get_metrics (line 109) | def get_metrics(self) -> Dict[str, Any]: method reset_metrics (line 124) | def reset_metrics(self) -> None: FILE: aip/messages.py class Rect (line 34) | class Rect(BaseModel): class ControlInfo (line 46) | class ControlInfo(BaseModel): class WindowInfo (line 65) | class WindowInfo(ControlInfo): class AppWindowControlInfo (line 78) | class AppWindowControlInfo(BaseModel): class MCPToolInfo (line 92) | class MCPToolInfo(BaseModel): class MCPToolCall (line 109) | class MCPToolCall(BaseModel): method tool_info (line 130) | def tool_info(self) -> MCPToolInfo: class Command (line 149) | class Command(BaseModel): class ResultStatus (line 172) | class ResultStatus(str, Enum): class Result (line 183) | class Result(BaseModel): class TaskStatus (line 200) | class TaskStatus(str, Enum): class ClientMessageType (line 224) | class ClientMessageType(str, Enum): class ServerMessageType (line 255) | class ServerMessageType(str, Enum): class ClientType (line 282) | class ClientType(str, Enum): class ServerMessage (line 299) | class ServerMessage(BaseModel): class ClientMessage (line 343) | class ClientMessage(BaseModel): class MessageValidator (line 398) | class MessageValidator: method validate_registration (line 407) | def validate_registration(msg: ClientMessage) -> bool: method validate_task_request (line 424) | def validate_task_request(msg: ClientMessage) -> bool: method validate_command_results (line 440) | def validate_command_results(msg: ClientMessage) -> bool: method validate_server_message (line 456) | def validate_server_message(msg: ServerMessage) -> bool: class BinaryMetadata (line 484) | class BinaryMetadata(BaseModel): class FileTransferStart (line 506) | class FileTransferStart(BaseModel): class FileTransferComplete (line 526) | class FileTransferComplete(BaseModel): class ChunkMetadata (line 543) | class ChunkMetadata(BaseModel): FILE: aip/protocol/base.py class AIPProtocol (line 22) | class AIPProtocol: method __init__ (line 41) | def __init__(self, transport: Transport): method send_message (line 52) | async def send_message(self, msg: Any) -> None: method receive_message (line 95) | async def receive_message(self, message_type: type = ServerMessage) ->... method add_middleware (line 139) | def add_middleware(self, middleware: "ProtocolMiddleware") -> None: method register_handler (line 151) | def register_handler(self, message_type: str, handler: MessageHandler)... method dispatch_message (line 163) | async def dispatch_message(self, msg: Any) -> None: method is_connected (line 181) | def is_connected(self) -> bool: method send_error (line 185) | async def send_error( method send_ack (line 208) | async def send_ack( method close (line 231) | async def close(self) -> None: method send_binary_message (line 239) | async def send_binary_message( method receive_binary_message (line 306) | async def receive_binary_message( method send_file (line 368) | async def send_file( method receive_file (line 459) | async def receive_file( class ProtocolMiddleware (line 546) | class ProtocolMiddleware(ABC): method process_outgoing (line 555) | async def process_outgoing(self, msg: Any) -> Any: method process_incoming (line 565) | async def process_incoming(self, msg: Any) -> Any: class LoggingMiddleware (line 575) | class LoggingMiddleware(ProtocolMiddleware): method __init__ (line 582) | def __init__(self, log_level: int = logging.DEBUG): method process_outgoing (line 591) | async def process_outgoing(self, msg: Any) -> Any: method process_incoming (line 596) | async def process_incoming(self, msg: Any) -> Any: FILE: aip/protocol/command.py class CommandProtocol (line 17) | class CommandProtocol(AIPProtocol): method __init__ (line 28) | def __init__(self, *args, **kwargs): method validate_command (line 33) | def validate_command(self, cmd: Command) -> bool: method validate_commands (line 48) | def validate_commands(self, commands: List[Command]) -> bool: method validate_result (line 57) | def validate_result(self, result: Result) -> bool: method validate_results (line 69) | def validate_results(self, results: List[Result]) -> bool: FILE: aip/protocol/device_info.py class DeviceInfoProtocol (line 26) | class DeviceInfoProtocol(AIPProtocol): method __init__ (line 36) | def __init__(self, *args, **kwargs): method request_device_info (line 41) | async def request_device_info( method send_device_info_response (line 68) | async def send_device_info_response( method send_device_info_push (line 93) | async def send_device_info_push( FILE: aip/protocol/heartbeat.py class HeartbeatProtocol (line 26) | class HeartbeatProtocol(AIPProtocol): method __init__ (line 36) | def __init__(self, *args, **kwargs): method send_heartbeat (line 43) | async def send_heartbeat( method send_heartbeat_ack (line 62) | async def send_heartbeat_ack(self, response_id: Optional[str] = None) ... method start_heartbeat (line 77) | async def start_heartbeat(self, client_id: str, interval: float = 30.0... method stop_heartbeat (line 94) | async def stop_heartbeat(self) -> None: method _heartbeat_loop (line 105) | async def _heartbeat_loop(self, client_id: str, interval: float) -> None: FILE: aip/protocol/registration.py class RegistrationProtocol (line 25) | class RegistrationProtocol(AIPProtocol): method __init__ (line 36) | def __init__(self, *args, **kwargs): method register_as_device (line 41) | async def register_as_device( method register_as_constellation (line 99) | async def register_as_constellation( method send_registration_confirmation (line 171) | async def send_registration_confirmation( method send_registration_error (line 187) | async def send_registration_error( method _generate_response_id (line 206) | def _generate_response_id() -> str: FILE: aip/protocol/task_execution.py class TaskExecutionProtocol (line 28) | class TaskExecutionProtocol(AIPProtocol): method __init__ (line 39) | def __init__(self, *args, **kwargs): method send_task_request (line 44) | async def send_task_request( method send_task_assignment (line 81) | async def send_task_assignment( method send_command (line 114) | async def send_command(self, server_message: ServerMessage) -> None: method send_commands (line 127) | async def send_commands( method send_command_results (line 166) | async def send_command_results( method send_task_result (line 198) | async def send_task_result( method send_task_end (line 228) | async def send_task_end( method send_task_end_ack (line 257) | async def send_task_end_ack( FILE: aip/resilience/heartbeat_manager.py class HeartbeatManager (line 18) | class HeartbeatManager: method __init__ (line 29) | def __init__( method start_heartbeat (line 48) | async def start_heartbeat( method stop_heartbeat (line 72) | async def stop_heartbeat(self, client_id: str) -> None: method stop_all (line 88) | async def stop_all(self) -> None: method is_running (line 95) | def is_running(self, client_id: str) -> bool: method get_interval (line 105) | def get_interval(self, client_id: str) -> Optional[float]: method _heartbeat_loop (line 114) | async def _heartbeat_loop(self, client_id: str, interval: float) -> None: FILE: aip/resilience/reconnection.py class ReconnectionPolicy (line 20) | class ReconnectionPolicy(str, Enum): class ReconnectionStrategy (line 29) | class ReconnectionStrategy: method __init__ (line 40) | def __init__( method handle_disconnection (line 67) | async def handle_disconnection( method attempt_reconnection (line 108) | async def attempt_reconnection( method _cancel_pending_tasks (line 158) | async def _cancel_pending_tasks( method _notify_disconnection (line 178) | async def _notify_disconnection( method _calculate_backoff (line 196) | def _calculate_backoff(self) -> float: method reset (line 216) | def reset(self) -> None: FILE: aip/resilience/timeout.py class TimeoutManager (line 17) | class TimeoutManager: method __init__ (line 28) | def __init__(self, default_timeout: float = 120.0): method with_timeout (line 37) | async def with_timeout( method with_timeout_or_none (line 67) | async def with_timeout_or_none( FILE: aip/transport/adapters.py class WebSocketAdapter (line 21) | class WebSocketAdapter(ABC): method send (line 30) | async def send(self, data: str) -> None: method receive (line 40) | async def receive(self) -> str: method send_bytes (line 50) | async def send_bytes(self, data: bytes) -> None: method receive_bytes (line 63) | async def receive_bytes(self) -> bytes: method receive_auto (line 76) | async def receive_auto(self) -> Union[str, bytes]: method close (line 89) | async def close(self) -> None: method is_open (line 96) | def is_open(self) -> bool: class FastAPIWebSocketAdapter (line 105) | class FastAPIWebSocketAdapter(WebSocketAdapter): method __init__ (line 113) | def __init__(self, websocket): method send (line 123) | async def send(self, data: str) -> None: method receive (line 127) | async def receive(self) -> str: method send_bytes (line 131) | async def send_bytes(self, data: bytes) -> None: method receive_bytes (line 139) | async def receive_bytes(self) -> bytes: method receive_auto (line 148) | async def receive_auto(self) -> Union[str, bytes]: method close (line 163) | async def close(self) -> None: method is_open (line 167) | def is_open(self) -> bool: class WebSocketsLibAdapter (line 174) | class WebSocketsLibAdapter(WebSocketAdapter): method __init__ (line 182) | def __init__(self, websocket: WebSocketClientProtocol): method send (line 190) | async def send(self, data: str) -> None: method receive (line 194) | async def receive(self) -> str: method send_bytes (line 202) | async def send_bytes(self, data: bytes) -> None: method receive_bytes (line 211) | async def receive_bytes(self) -> bytes: method receive_auto (line 225) | async def receive_auto(self) -> Union[str, bytes]: method close (line 234) | async def close(self) -> None: method is_open (line 238) | def is_open(self) -> bool: function create_adapter (line 243) | def create_adapter(websocket) -> WebSocketAdapter: FILE: aip/transport/base.py class TransportState (line 16) | class TransportState(str, Enum): class Transport (line 34) | class Transport(ABC): method __init__ (line 48) | def __init__(self): method state (line 53) | def state(self) -> TransportState: method is_connected (line 58) | def is_connected(self) -> bool: method connect (line 63) | async def connect(self, url: str, **kwargs) -> None: method send (line 74) | async def send(self, data: bytes) -> None: method receive (line 85) | async def receive(self) -> bytes: method close (line 98) | async def close(self) -> None: method wait_closed (line 107) | async def wait_closed(self) -> None: method __repr__ (line 115) | def __repr__(self) -> str: FILE: aip/transport/websocket.py class WebSocketTransport (line 24) | class WebSocketTransport(Transport): method __init__ (line 52) | def __init__( method connect (line 88) | async def connect(self, url: str, **kwargs) -> None: method send (line 131) | async def send(self, data: bytes) -> None: method receive (line 176) | async def receive(self) -> bytes: method close (line 217) | async def close(self) -> None: method wait_closed (line 238) | async def wait_closed(self) -> None: method send_binary (line 248) | async def send_binary(self, data: bytes) -> None: method receive_binary (line 298) | async def receive_binary(self) -> bytes: method receive_auto (line 350) | async def receive_auto(self) -> Union[bytes, str]: method websocket (line 410) | def websocket(self) -> Optional[WebSocketClientProtocol]: method __repr__ (line 418) | def __repr__(self) -> str: FILE: config/config_loader.py class DynamicConfig (line 59) | class DynamicConfig: method __init__ (line 76) | def __init__(self, data: Dict[str, Any], name: str = "config"): method __getattr__ (line 92) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 113) | def __getitem__(self, key: str) -> Any: method __contains__ (line 119) | def __contains__(self, key: str) -> bool: method get (line 123) | def get(self, key: str, default: Any = None) -> Any: method keys (line 129) | def keys(self) -> List[str]: method items (line 133) | def items(self): method values (line 137) | def values(self): method to_dict (line 141) | def to_dict(self) -> Dict[str, Any]: method __repr__ (line 145) | def __repr__(self) -> str: method __str__ (line 148) | def __str__(self) -> str: class ConfigLoader (line 152) | class ConfigLoader: method __init__ (line 182) | def __init__(self, base_path: str = "config"): method get_instance (line 194) | def get_instance(cls, base_path: str = "config") -> "ConfigLoader": method reset (line 206) | def reset(cls) -> None: method _load_yaml (line 210) | def _load_yaml(self, path: Path) -> Optional[Dict[str, Any]]: method _deep_merge (line 236) | def _deep_merge(self, target: Dict[str, Any], source: Dict[str, Any]) ... method _expand_env_vars (line 256) | def _expand_env_vars(self, value: Any) -> Any: method _discover_yaml_files (line 279) | def _discover_yaml_files(self, directory: Path) -> List[Path]: method _load_module_configs (line 302) | def _load_module_configs( method _load_with_fallback (line 339) | def _load_with_fallback( method _warn_duplicate_configs (line 400) | def _warn_duplicate_configs( method _warn_legacy_config (line 428) | def _warn_legacy_config(self, module: str, legacy_path: str, new_path:... method load_ufo_config (line 455) | def load_ufo_config(self, env: Optional[str] = None) -> UFOConfig: method load_galaxy_config (line 488) | def load_galaxy_config(self, env: Optional[str] = None) -> GalaxyConfig: method _apply_legacy_transforms (line 511) | def _apply_legacy_transforms(self, config: Dict[str, Any]) -> None: method _update_api_base (line 533) | def _update_api_base(config: Dict[str, Any], agent_key: str) -> None: function get_ufo_config (line 575) | def get_ufo_config(reload: bool = False) -> UFOConfig: function get_galaxy_config (line 615) | def get_galaxy_config(reload: bool = False) -> GalaxyConfig: function clear_config_cache (line 655) | def clear_config_cache(): FILE: config/config_schemas.py class AgentConfig (line 15) | class AgentConfig: method __getattr__ (line 45) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 71) | def __getitem__(self, key: str) -> Any: method __contains__ (line 81) | def __contains__(self, key: str) -> bool: method get (line 85) | def get(self, key: str, default: Any = None) -> Any: method to_dict (line 92) | def to_dict(self) -> Dict[str, Any]: method from_dict (line 118) | def from_dict(cls, data: Dict[str, Any]) -> "AgentConfig": class RAGConfig (line 161) | class RAGConfig: method __getattr__ (line 178) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 209) | def __getitem__(self, key: str) -> Any: method get (line 216) | def get(self, key: str, default: Any = None) -> Any: method from_dict (line 223) | def from_dict(cls, data: Dict[str, Any]) -> "RAGConfig": class SystemConfig (line 258) | class SystemConfig: method __getattr__ (line 433) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 458) | def __getitem__(self, key: str) -> Any: method get (line 465) | def get(self, key: str, default: Any = None) -> Any: method from_dict (line 472) | def from_dict(cls, data: Dict[str, Any]) -> "SystemConfig": class UFOConfig (line 600) | class UFOConfig: method __getattr__ (line 622) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 647) | def __getitem__(self, key: str) -> Any: method __contains__ (line 655) | def __contains__(self, key: str) -> bool: method get (line 659) | def get(self, key: str, default: Any = None) -> Any: method keys (line 663) | def keys(self): method items (line 667) | def items(self): method values (line 671) | def values(self): method to_dict (line 675) | def to_dict(self) -> Dict[str, Any]: method from_dict (line 683) | def from_dict(cls, data: Dict[str, Any]) -> "UFOConfig": class ConstellationRuntimeConfig (line 698) | class ConstellationRuntimeConfig: method __getattr__ (line 715) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 740) | def __getitem__(self, key: str) -> Any: method get (line 747) | def get(self, key: str, default: Any = None) -> Any: method from_dict (line 754) | def from_dict(cls, data: Dict[str, Any]) -> "ConstellationRuntimeConfig": class GalaxyAgentConfig (line 780) | class GalaxyAgentConfig: method __getattr__ (line 787) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 795) | def __getitem__(self, key: str) -> Any: method from_dict (line 801) | def from_dict(cls, data: Dict[str, Any]) -> "GalaxyAgentConfig": class GalaxyConfig (line 811) | class GalaxyConfig: method __getattr__ (line 828) | def __getattr__(self, name: str) -> Any: method __getitem__ (line 847) | def __getitem__(self, key: str) -> Any: method __contains__ (line 851) | def __contains__(self, key: str) -> bool: method get (line 855) | def get(self, key: str, default: Any = None) -> Any: method keys (line 859) | def keys(self): method items (line 862) | def items(self): method from_dict (line 866) | def from_dict(cls, data: Dict[str, Any]) -> "GalaxyConfig": FILE: dataflow/config/config.py class Config (line 7) | class Config(Config): method __init__ (line 10) | def __init__(self, config_path="dataflow/config/"): method get_instance (line 19) | def get_instance(): method optimize_configs (line 30) | def optimize_configs(self, configs): FILE: dataflow/data_flow_controller.py class AppEnum (line 37) | class AppEnum(Enum): method __init__ (line 46) | def __init__(self, id: int, description: str, file_extension: str, win... class TaskObject (line 62) | class TaskObject: method __init__ (line 63) | def __init__(self, task_file_path: str, task_type: str) -> None: method _choose_app_from_json (line 79) | def _choose_app_from_json(self, task_app: str) -> AppEnum: method _init_attr (line 91) | def _init_attr(self, task_type: str, task_json_file: Dict[str, Any]) -... class DataFlowController (line 111) | class DataFlowController: method __init__ (line 116) | def __init__(self, task_path: str, task_type: str) -> None: method init_task_info (line 134) | def init_task_info(self) -> Dict[str, Any]: method _load_schema (line 161) | def _load_schema(self, task_type: str) -> Dict[str, Any]: method execute_instantiation (line 173) | def execute_instantiation(self) -> Optional[List[Dict[str, Any]]]: method execute_execution (line 214) | def execute_execution(self, request: str, plan: Dict[str, any]) -> None: method instantiation_single_flow (line 261) | def instantiation_single_flow( method save_result (line 296) | def save_result(self) -> None: method template_copied_path (line 354) | def template_copied_path(self) -> str: method instantiated_plan (line 363) | def instantiated_plan(self) -> List[Dict[str, Any]]: method instantiated_plan (line 374) | def instantiated_plan(self, value: List[Dict[str, Any]]) -> None: method reformat_to_batch (line 387) | def reformat_to_batch(self, path) -> None: method run (line 431) | def run(self) -> None: FILE: dataflow/dataflow.py function parse_args (line 10) | def parse_args() -> argparse.Namespace: function validate_path (line 49) | def validate_path(path: str) -> str: function process_task (line 64) | def process_task(task_path: str, task_type: str) -> None: function process_batch (line 81) | def process_batch(task_dir: str, task_type: str) -> None: function main (line 99) | def main(): FILE: dataflow/env/env_manager.py class WindowsAppEnv (line 32) | class WindowsAppEnv: method __init__ (line 37) | def __init__(self, app_object: object) -> None: method start (line 48) | def start(self, copied_template_path: str) -> None: method close (line 65) | def close(self) -> None: method _check_and_kill_process (line 85) | def _check_and_kill_process(self) -> None: method find_matching_window (line 99) | def find_matching_window(self, doc_name: str) -> Optional[UIAWrapper]: method _match_window_name (line 115) | def _match_window_name(self, window_title: str, doc_name: str) -> bool: method _calculate_match_score (line 145) | def _calculate_match_score(self, control: ControlInfo, control_text: s... method find_matching_controller (line 165) | def find_matching_controller( FILE: dataflow/execution/agent/execute_agent.py class ExecuteAgent (line 7) | class ExecuteAgent(AppAgent): method __init__ (line 12) | def __init__( FILE: dataflow/execution/agent/execute_eval_agent.py class ExecuteEvalAgent (line 9) | class ExecuteEvalAgent(EvaluationAgent): method __init__ (line 14) | def __init__( method get_prompter (line 42) | def get_prompter( FILE: dataflow/execution/workflow/execute_flow.py class ExecuteFlow (line 19) | class ExecuteFlow(AppAgentProcessor): method __init__ (line 27) | def __init__( method _get_or_create_execute_agent (line 54) | def _get_or_create_execute_agent(self) -> ExecuteAgent: method _get_or_create_evaluation_agent (line 68) | def _get_or_create_evaluation_agent(self) -> ExecuteEvalAgent: method _initialize_logs (line 85) | def _initialize_logs(self, log_path: str) -> None: method execute (line 98) | def execute( method execute_plan (line 129) | def execute_plan( method process (line 218) | def process(self) -> None: method print_step_info (line 230) | def print_step_info(self) -> None: method log_save (line 243) | def log_save(self) -> None: method _parse_step_plan (line 262) | def _parse_step_plan(self, step_plan: Dict[str, Any]) -> None: method init_and_final_capture_screenshot (line 282) | def init_and_final_capture_screenshot(self) -> None: method execute_action (line 303) | def execute_action(self) -> None: method general_error_handler (line 373) | def general_error_handler(self) -> None: FILE: dataflow/instantiation/agent/filter_agent.py class FilterAgent (line 10) | class FilterAgent(BasicAgent): method __init__ (line 15) | def __init__( method get_prompter (line 43) | def get_prompter( method message_constructor (line 57) | def message_constructor(self, request: str, app: str) -> List[str]: method process_confirmation (line 77) | def process_confirmation(self) -> None: FILE: dataflow/instantiation/agent/prefill_agent.py class PrefillAgent (line 11) | class PrefillAgent(BasicAgent): method __init__ (line 16) | def __init__( method get_prompter (line 44) | def get_prompter( method message_constructor (line 59) | def message_constructor( method process_confirmation (line 88) | def process_confirmation(self) -> None: FILE: dataflow/instantiation/agent/template_agent.py class TemplateAgent (line 11) | class TemplateAgent(BasicAgent): method __init__ (line 16) | def __init__( method get_prompter (line 39) | def get_prompter( method message_constructor (line 56) | def message_constructor( method process_confirmation (line 81) | def process_confirmation(self) -> None: FILE: dataflow/instantiation/workflow/choose_template_flow.py class ChooseTemplateFlow (line 21) | class ChooseTemplateFlow: method __init__ (line 28) | def __init__(self, app_name: str, task_file_name: str, file_extension:... method execute (line 44) | def execute(self) -> str: method _create_copied_file (line 59) | def _create_copied_file( method _generate_copied_file_path (line 82) | def _generate_copied_file_path(self, folder_path: Path, file_name: str... method _get_chosen_file_path (line 96) | def _get_chosen_file_path(self) -> str: method _choose_random_template (line 117) | def _choose_random_template(self) -> str: method _choose_template_and_copy (line 133) | def _choose_template_and_copy(self) -> str: method _choose_target_template_file (line 152) | def _choose_target_template_file( method _choose_target_template_file_semantic (line 178) | def _choose_target_template_file_semantic( method _choose_target_template_file_llm (line 200) | def _choose_target_template_file_llm( method _load_embedding_model (line 228) | def _load_embedding_model(model_name: str) -> CacheBackedEmbeddings: FILE: dataflow/instantiation/workflow/filter_flow.py class FilterFlow (line 14) | class FilterFlow: method __init__ (line 21) | def __init__(self, app_name: str, task_file_name: str) -> None: method _get_or_create_filter_agent (line 34) | def _get_or_create_filter_agent(self) -> FilterAgent: method execute (line 51) | def execute(self, instantiated_request: str) -> Dict[str, Any]: method _initialize_logs (line 73) | def _initialize_logs(self) -> None: method _get_filtered_result (line 86) | def _get_filtered_result(self, instantiated_request: str) -> Tuple[boo... method _fix_json_commas (line 132) | def _fix_json_commas(self, json_string: str) -> str: FILE: dataflow/instantiation/workflow/prefill_flow.py class PrefillFlow (line 21) | class PrefillFlow(AppAgentProcessor): method __init__ (line 28) | def __init__( method execute (line 79) | def execute( method _instantiate_task (line 105) | def _instantiate_task( method _update_state (line 134) | def _update_state(self, file_path: str) -> None: method _get_prefill_actions (line 174) | def _get_prefill_actions( method _log_message (line 225) | def _log_message(self, prompt_message: str) -> None: method _log_response (line 238) | def _log_response( method _save_screenshot (line 255) | def _save_screenshot(self, doc_name: str, save_path: str) -> None: FILE: dataflow/prompter/execution/execute_eval_prompter.py class ExecuteEvalAgentPrompter (line 11) | class ExecuteEvalAgentPrompter(EvaluationAgentPrompter): method __init__ (line 16) | def __init__( method load_logs (line 42) | def load_logs(log_path: str) -> List[Dict[str, str]]: FILE: dataflow/prompter/instantiation/filter_prompter.py class FilterPrompter (line 11) | class FilterPrompter(BasicPrompter): method __init__ (line 16) | def __init__( method api_prompt_helper (line 36) | def api_prompt_helper(self, apis: Dict = {}, verbose: int = 1) -> str: method system_prompt_construction (line 84) | def system_prompt_construction(self, app: str = "") -> str: method user_prompt_construction (line 98) | def user_prompt_construction(self, request: str) -> str: method user_content_construction (line 110) | def user_content_construction(self, request: str) -> List[Dict]: method examples_prompt_helper (line 125) | def examples_prompt_helper( FILE: dataflow/prompter/instantiation/prefill_prompter.py class PrefillPrompter (line 12) | class PrefillPrompter(BasicPrompter): method __init__ (line 17) | def __init__( method api_prompt_helper (line 37) | def api_prompt_helper(self, verbose: int = 1) -> str: method system_prompt_construction (line 67) | def system_prompt_construction(self, additional_examples: List = []) -... method user_prompt_construction (line 78) | def user_prompt_construction( method load_screenshots (line 95) | def load_screenshots(self, log_path: str) -> str: method user_content_construction (line 108) | def user_content_construction( method examples_prompt_helper (line 142) | def examples_prompt_helper( FILE: dataflow/prompter/instantiation/template_prompter.py class TemplatePrompter (line 13) | class TemplatePrompter(BasicPrompter): method __init__ (line 18) | def __init__( method encode_image (line 32) | def encode_image(self, image_path: str) -> str: method file_prompt_helper (line 46) | def file_prompt_helper(self, path) -> str: method system_prompt_construction (line 70) | def system_prompt_construction(self, descriptions: str = "") -> str: method user_prompt_construction (line 84) | def user_prompt_construction(self, request: str) -> str: method user_content_construction (line 96) | def user_content_construction(self, path: str, request: str) -> List[D... FILE: documents/docs/javascripts/mermaid-init.js function initMermaid (line 10) | function initMermaid() { FILE: galaxy/agents/constellation_agent.py class ConstellationAgent (line 45) | class ConstellationAgent(BasicAgent, IRequestProcessor, IResultProcessor): method __init__ (line 65) | def __init__( method current_constellation (line 101) | def current_constellation(self) -> Optional[TaskConstellation]: method _initialize_prompter (line 111) | async def _initialize_prompter(self, context: Context) -> None: method _ensure_context_provision (line 120) | async def _ensure_context_provision(self, context: Context) -> None: method _create_and_process (line 130) | async def _create_and_process(self, context: Context) -> Tuple[float, ... method _update_agent_status (line 145) | def _update_agent_status(self) -> None: method _validate_and_update_constellation (line 152) | async def _validate_and_update_constellation( method _create_timing_info (line 170) | def _create_timing_info( method _sync_constellation_to_mcp (line 187) | async def _sync_constellation_to_mcp( method _log_constellation_state (line 209) | def _log_constellation_state( method _log_task_statuses (line 221) | def _log_task_statuses( method _publish_constellation_modified_event (line 236) | async def _publish_constellation_modified_event( method _handle_constellation_completion (line 272) | async def _handle_constellation_completion( method process_creation (line 307) | async def process_creation( method process_editing (line 340) | async def process_editing( method context_provision (line 417) | async def context_provision( method _load_mcp_context (line 428) | async def _load_mcp_context( method get_prompter (line 480) | def get_prompter(self, weaving_mode: WeavingMode) -> BaseConstellation... method message_constructor (line 490) | def message_constructor( method process_confirmation (line 517) | async def process_confirmation(self, context: Context = None) -> bool: method print_response (line 528) | def print_response( method default_state (line 555) | def default_state(self): method status_manager (line 566) | def status_manager(self): method orchestrator (line 572) | def orchestrator(self) -> TaskConstellationOrchestrator: method task_completion_queue (line 580) | def task_completion_queue(self) -> asyncio.Queue[TaskEvent]: method constellation_completion_queue (line 588) | def constellation_completion_queue(self) -> asyncio.Queue[Constellatio... method add_task_completion_event (line 595) | async def add_task_completion_event(self, event: TaskEvent) -> None: method add_constellation_completion_event (line 632) | async def add_constellation_completion_event( FILE: galaxy/agents/constellation_agent_states.py class ConstellationAgentStatus (line 24) | class ConstellationAgentStatus(Enum): class ConstellationAgentStateManager (line 33) | class ConstellationAgentStateManager(AgentStateManager): method none_state (line 39) | def none_state(self) -> AgentState: class ConstellationAgentState (line 43) | class ConstellationAgentState(AgentState): method agent_class (line 47) | def agent_class(cls): method next_state (line 52) | def next_state(self, agent: "ConstellationAgent") -> AgentState: class StartConstellationAgentState (line 64) | class StartConstellationAgentState(ConstellationAgentState): method handle (line 67) | async def handle(self, agent: "ConstellationAgent", context: Context) ... method next_agent (line 129) | def next_agent(self, agent): method is_round_end (line 132) | def is_round_end(self) -> bool: method is_subtask_end (line 135) | def is_subtask_end(self) -> bool: method name (line 139) | def name(cls) -> str: class ContinueConstellationAgentState (line 144) | class ContinueConstellationAgentState(ConstellationAgentState): method _get_merged_constellation (line 147) | async def _get_merged_constellation( method handle (line 182) | async def handle(self, agent: "ConstellationAgent", context=None) -> N... method next_agent (line 236) | def next_agent(self, agent): method is_round_end (line 239) | def is_round_end(self) -> bool: method is_subtask_end (line 242) | def is_subtask_end(self) -> bool: method name (line 246) | def name(cls) -> str: class FinishConstellationAgentState (line 251) | class FinishConstellationAgentState(ConstellationAgentState): method handle (line 254) | async def handle(self, agent: "ConstellationAgent", context=None) -> N... method next_state (line 258) | def next_state(self, agent: "ConstellationAgent") -> AgentState: method next_agent (line 261) | def next_agent(self, agent: "ConstellationAgent"): method is_round_end (line 264) | def is_round_end(self) -> bool: method is_subtask_end (line 267) | def is_subtask_end(self) -> bool: method name (line 271) | def name(cls) -> str: class FailConstellationAgentState (line 276) | class FailConstellationAgentState(ConstellationAgentState): method handle (line 279) | async def handle(self, agent: "ConstellationAgent", context=None) -> N... method next_state (line 283) | def next_state(self, agent: "ConstellationAgent") -> AgentState: method next_agent (line 286) | def next_agent(self, agent: "ConstellationAgent"): method is_round_end (line 289) | def is_round_end(self) -> bool: method is_subtask_end (line 292) | def is_subtask_end(self) -> bool: method name (line 296) | def name(cls) -> str: FILE: galaxy/agents/processors/processor.py class ConstellationAgentProcessor (line 36) | class ConstellationAgentProcessor(ProcessorTemplate): method __init__ (line 57) | def __init__(self, agent: "ConstellationAgent", global_context: Contex... method _setup_strategies (line 67) | def _setup_strategies(self) -> None: method _setup_middleware (line 96) | def _setup_middleware(self) -> None: method _get_processor_specific_context_data (line 106) | def _get_processor_specific_context_data(self) -> Dict[str, Any]: method _finalize_processing_context (line 131) | def _finalize_processing_context( class ConstellationLoggingMiddleware (line 148) | class ConstellationLoggingMiddleware(EnhancedLoggingMiddleware): method __init__ (line 159) | def __init__(self) -> None: method before_process (line 163) | async def before_process( method on_error (line 201) | async def on_error(self, processor: ProcessorTemplate, error: Exceptio... FILE: galaxy/agents/processors/processor_context.py class ConstellationProcessorContext (line 11) | class ConstellationProcessorContext(BasicProcessorContext): method selected_keys (line 48) | def selected_keys(self) -> List[str]: method to_dict (line 77) | def to_dict(self, selective: bool = True) -> Dict[str, Any]: FILE: galaxy/agents/processors/strategies/base_constellation_strategy.py class ConstellationLLMInteractionStrategy (line 61) | class ConstellationLLMInteractionStrategy(BaseProcessingStrategy): method __init__ (line 74) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 84) | async def execute( method _build_comprehensive_prompt (line 145) | async def _build_comprehensive_prompt( method _log_request_data (line 185) | def _log_request_data( method _get_llm_response_with_retry (line 220) | async def _get_llm_response_with_retry( method _parse_and_validate_response (line 266) | def _parse_and_validate_response( method _validate_response_fields (line 290) | def _validate_response_fields(self, response: ConstellationAgentRespon... class BaseConstellationActionExecutionStrategy (line 312) | class BaseConstellationActionExecutionStrategy(BaseProcessingStrategy): method __init__ (line 325) | def __init__(self, weaving_mode: WeavingMode, fail_fast: bool = False)... method execute (line 337) | async def execute( method _create_mode_specific_action_info (line 387) | async def _create_mode_specific_action_info( method publish_actions (line 396) | async def publish_actions( method sync_constellation (line 408) | def sync_constellation( method _execute_constellation_action (line 418) | async def _execute_constellation_action( method _action_to_command (line 452) | def _action_to_command(self, action: ActionCommandInfo) -> Command: method _create_action_info (line 462) | def _create_action_info( class ConstellationMemoryUpdateStrategy (line 506) | class ConstellationMemoryUpdateStrategy(BaseProcessingStrategy): method __init__ (line 514) | def __init__(self, fail_fast: bool = False) -> None: method execute (line 521) | async def execute( method _create_additional_memory_data (line 563) | def _create_additional_memory_data( method _create_and_populate_memory_item (line 625) | def _create_and_populate_memory_item( method _update_structural_logs (line 652) | def _update_structural_logs( FILE: galaxy/agents/processors/strategies/constellation_creation_strategy.py class ConstellationCreationActionExecutionStrategy (line 33) | class ConstellationCreationActionExecutionStrategy( method __init__ (line 44) | def __init__(self, fail_fast: bool = False) -> None: method _create_mode_specific_action_info (line 51) | async def _create_mode_specific_action_info( method publish_actions (line 91) | async def publish_actions( method sync_constellation (line 156) | def sync_constellation( FILE: galaxy/agents/processors/strategies/constellation_editing_strategy.py class ConstellationEditingActionExecutionStrategy (line 32) | class ConstellationEditingActionExecutionStrategy( method __init__ (line 43) | def __init__(self, fail_fast: bool = False) -> None: method _create_mode_specific_action_info (line 50) | async def _create_mode_specific_action_info( method publish_actions (line 78) | async def publish_actions( method sync_constellation (line 105) | def sync_constellation( FILE: galaxy/agents/processors/strategies/constellation_factory.py class ConstellationStrategyFactory (line 27) | class ConstellationStrategyFactory: method create_llm_interaction_strategy (line 47) | def create_llm_interaction_strategy( method create_action_execution_strategy (line 62) | def create_action_execution_strategy( method create_memory_update_strategy (line 82) | def create_memory_update_strategy( method create_all_strategies (line 94) | def create_all_strategies( method get_supported_weaving_modes (line 121) | def get_supported_weaving_modes(cls) -> list[WeavingMode]: function create_constellation_strategies_for_mode (line 133) | def create_constellation_strategies_for_mode( FILE: galaxy/agents/prompters/base_constellation_prompter.py class BaseConstellationPrompter (line 27) | class BaseConstellationPrompter(BasicPrompter, ABC): method __init__ (line 35) | def __init__(self, prompt_template: str, example_prompt_template: str): method _format_agent_profile (line 45) | def _format_agent_profile(self, device_info: Dict[str, AgentProfile]) ... method _format_constellation (line 87) | def _format_constellation(self, constellation: TaskConstellation) -> str: method user_content_construction (line 237) | def user_content_construction( method system_prompt_construction (line 255) | def system_prompt_construction(self) -> str: method user_prompt_construction (line 268) | def user_prompt_construction( method examples_prompt_helper (line 290) | def examples_prompt_helper( method create_api_prompt_template (line 330) | def create_api_prompt_template(self, tools: List[MCPToolInfo]): class ConstellationPrompterFactory (line 340) | class ConstellationPrompterFactory: method create_prompter (line 358) | def create_prompter( method get_supported_weaving_modes (line 401) | def get_supported_weaving_modes(cls) -> list[WeavingMode]: FILE: galaxy/agents/prompters/constellation_creation_prompter.py class ConstellationCreationPrompter (line 13) | class ConstellationCreationPrompter(BaseConstellationPrompter): FILE: galaxy/agents/prompters/constellation_editing_prompter.py class ConstellationEditingPrompter (line 13) | class ConstellationEditingPrompter(BaseConstellationPrompter): FILE: galaxy/agents/schema.py class IDManager (line 13) | class IDManager: method __new__ (line 22) | def __new__(cls): method generate_constellation_id (line 35) | def generate_constellation_id(self) -> str: method generate_task_id (line 39) | def generate_task_id( method generate_line_id (line 64) | def generate_line_id( method register_existing_id (line 89) | def register_existing_id(self, constellation_id: str, id_type: str, id... method is_task_id_available (line 104) | def is_task_id_available(self, constellation_id: str, task_id: str) ->... method is_line_id_available (line 110) | def is_line_id_available(self, constellation_id: str, line_id: str) ->... class WeavingMode (line 117) | class WeavingMode(str, Enum): class TaskStarSchema (line 126) | class TaskStarSchema(BaseModel): method convert_priority (line 156) | def convert_priority(cls, v): method convert_status (line 166) | def convert_status(cls, v): method convert_device_type (line 174) | def convert_device_type(cls, v): method generate_task_id (line 184) | def generate_task_id(cls, data): class TaskStarLineSchema (line 193) | class TaskStarLineSchema(BaseModel): method convert_dependency_type (line 212) | def convert_dependency_type(cls, v): method generate_line_id (line 220) | def generate_line_id(cls, data): class TaskConstellationSchema (line 229) | class TaskConstellationSchema(BaseModel): method convert_state (line 252) | def convert_state(cls, v): method generate_constellation_id (line 260) | def generate_constellation_id(cls, data): method convert_lists_to_dicts (line 273) | def convert_lists_to_dicts(cls, data): method validate_unique_ids (line 315) | def validate_unique_ids(self): method get_tasks_as_list (line 341) | def get_tasks_as_list(self) -> List[TaskStarSchema]: method get_dependencies_as_list (line 345) | def get_dependencies_as_list(self) -> List[TaskStarLineSchema]: method to_dict_with_lists (line 349) | def to_dict_with_lists(self) -> Dict[str, Any]: class ConstellationAgentResponse (line 361) | class ConstellationAgentResponse(BaseModel): class ConstellationRequestLog (line 374) | class ConstellationRequestLog: FILE: galaxy/client/components/connection_manager.py class WebSocketConnectionManager (line 37) | class WebSocketConnectionManager: method __init__ (line 43) | def __init__(self, task_name: str): method connect_to_device (line 67) | async def connect_to_device( method _cleanup_device_protocols (line 154) | def _cleanup_device_protocols(self, device_id: str) -> None: method _register_constellation_client (line 168) | async def _register_constellation_client(self, device_info: AgentProfi... method send_task_to_device (line 266) | async def send_task_to_device( method _wait_for_task_response (line 354) | async def _wait_for_task_response( method complete_task_response (line 399) | def complete_task_response(self, task_id: str, response: ServerMessage... method is_connected (line 446) | def is_connected(self, device_id: str) -> bool: method disconnect_device (line 451) | async def disconnect_device(self, device_id: str) -> None: method _cancel_pending_tasks_for_device (line 474) | def _cancel_pending_tasks_for_device(self, device_id: str) -> None: method disconnect_all (line 510) | async def disconnect_all(self) -> None: method request_device_info (line 515) | async def request_device_info(self, device_id: str) -> Optional[Dict[s... method complete_device_info_response (line 584) | def complete_device_info_response( method complete_registration_response (line 614) | def complete_registration_response( FILE: galaxy/client/components/device_registry.py class DeviceRegistry (line 18) | class DeviceRegistry: method __init__ (line 24) | def __init__(self): method register_device (line 29) | def register_device( method get_device (line 64) | def get_device(self, device_id: str) -> Optional[AgentProfile]: method get_all_devices (line 68) | def get_all_devices(self, connected: bool = False) -> Dict[str, AgentP... method update_device_status (line 83) | def update_device_status(self, device_id: str, status: DeviceStatus) -... method set_device_busy (line 88) | def set_device_busy(self, device_id: str, task_id: str) -> None: method set_device_idle (line 100) | def set_device_idle(self, device_id: str) -> None: method is_device_busy (line 111) | def is_device_busy(self, device_id: str) -> bool: method get_current_task (line 122) | def get_current_task(self, device_id: str) -> Optional[str]: method increment_connection_attempts (line 133) | def increment_connection_attempts(self, device_id: str) -> int: method reset_connection_attempts (line 140) | def reset_connection_attempts(self, device_id: str) -> None: method update_heartbeat (line 146) | def update_heartbeat(self, device_id: str) -> None: method set_device_capabilities (line 151) | def set_device_capabilities( method get_device_capabilities (line 165) | def get_device_capabilities(self, device_id: str) -> Dict[str, Any]: method get_connected_devices (line 169) | def get_connected_devices(self) -> List[str]: method is_device_registered (line 177) | def is_device_registered(self, device_id: str) -> bool: method remove_device (line 181) | def remove_device(self, device_id: str) -> bool: method update_device_system_info (line 189) | def update_device_system_info( method get_device_system_info (line 258) | def get_device_system_info(self, device_id: str) -> Optional[Dict[str,... FILE: galaxy/client/components/heartbeat_manager.py class HeartbeatManager (line 21) | class HeartbeatManager: method __init__ (line 27) | def __init__( method start_heartbeat (line 41) | def start_heartbeat(self, device_id: str) -> None: method stop_heartbeat (line 49) | def stop_heartbeat(self, device_id: str) -> None: method _heartbeat_loop (line 61) | async def _heartbeat_loop(self, device_id: str) -> None: method handle_heartbeat_response (line 90) | def handle_heartbeat_response(self, device_id: str) -> None: method stop_all_heartbeats (line 95) | def stop_all_heartbeats(self) -> None: FILE: galaxy/client/components/message_processor.py class MessageProcessor (line 27) | class MessageProcessor: method __init__ (line 37) | def __init__( method set_connection_manager (line 60) | def set_connection_manager( method set_disconnection_handler (line 74) | def set_disconnection_handler(self, handler: callable) -> None: method start_message_handler (line 86) | def start_message_handler( method stop_message_handler (line 105) | def stop_message_handler(self, device_id: str) -> None: method _handle_device_messages (line 121) | async def _handle_device_messages( method _process_server_message (line 216) | async def _process_server_message( method _handle_task_completion (line 287) | async def _handle_task_completion( method _handle_error_message (line 343) | async def _handle_error_message( method _handle_command_message (line 358) | async def _handle_command_message( method _handle_device_info_response (line 387) | async def _handle_device_info_response( method _process_device_info_response (line 437) | async def _process_device_info_response(self, device_id: str, results:... method _handle_disconnection (line 468) | async def _handle_disconnection(self, device_id: str) -> None: method stop_all_handlers (line 498) | def stop_all_handlers(self) -> None: FILE: galaxy/client/components/task_queue_manager.py class TaskQueueManager (line 19) | class TaskQueueManager: method __init__ (line 25) | def __init__(self): method enqueue_task (line 34) | def enqueue_task(self, device_id: str, task_request: TaskRequest) -> a... method dequeue_task (line 65) | def dequeue_task(self, device_id: str) -> Optional[TaskRequest]: method peek_next_task (line 82) | def peek_next_task(self, device_id: str) -> Optional[TaskRequest]: method get_queue_size (line 93) | def get_queue_size(self, device_id: str) -> int: method has_queued_tasks (line 99) | def has_queued_tasks(self, device_id: str) -> bool: method complete_task (line 103) | def complete_task(self, device_id: str, task_id: str, result: any) -> ... method fail_task (line 121) | def fail_task(self, device_id: str, task_id: str, exception: Exception... method cancel_all_tasks (line 141) | def cancel_all_tasks(self, device_id: str) -> None: method get_pending_task_ids (line 162) | def get_pending_task_ids(self, device_id: str) -> List[str]: method get_queued_task_ids (line 168) | def get_queued_task_ids(self, device_id: str) -> List[str]: FILE: galaxy/client/components/types.py class DeviceStatus (line 17) | class DeviceStatus(Enum): class AgentProfile (line 30) | class AgentProfile: class TaskRequest (line 46) | class TaskRequest: class DeviceEventHandler (line 58) | class DeviceEventHandler(ABC): method on_device_connected (line 62) | async def on_device_connected( method on_device_disconnected (line 69) | async def on_device_disconnected(self, device_id: str) -> None: method on_task_completed (line 74) | async def on_task_completed( FILE: galaxy/client/config_loader.py class DeviceConfig (line 26) | class DeviceConfig: class ConstellationConfig (line 39) | class ConstellationConfig: method from_file (line 49) | def from_file(cls, config_path: str) -> "ConstellationConfig": method from_json (line 63) | def from_json(cls, config_path: str) -> "ConstellationConfig": method from_yaml (line 103) | def from_yaml(cls, config_path: str) -> "ConstellationConfig": method from_args (line 170) | def from_args(cls, args: argparse.Namespace) -> "ConstellationConfig": method from_env (line 223) | def from_env(cls) -> "ConstellationConfig": method to_file (line 262) | def to_file(self, config_path: str) -> None: method to_json (line 274) | def to_json(self, config_path: str) -> None: method to_yaml (line 312) | def to_yaml(self, config_path: str) -> None: method add_device (line 361) | def add_device( method remove_device (line 387) | def remove_device(self, device_id: str) -> bool: method get_device_config (line 400) | def get_device_config(self, device_id: str) -> Optional[DeviceConfig]: method create_sample_config (line 413) | def create_sample_config(cls, file_path: str) -> None: function create_sample_config (line 422) | def create_sample_config(config_path: str) -> None: function setup_argument_parser (line 472) | def setup_argument_parser() -> argparse.ArgumentParser: FILE: galaxy/client/constellation_client.py class ConstellationClient (line 18) | class ConstellationClient: method __init__ (line 33) | def __init__( method initialize (line 59) | async def initialize(self) -> Dict[str, bool]: method register_device_from_config (line 91) | async def register_device_from_config(self, device_config: DeviceConfi... method register_device (line 107) | async def register_device( method connect_device (line 125) | async def connect_device(self, device_id: str) -> bool: method disconnect_device (line 129) | async def disconnect_device(self, device_id: str) -> bool: method connect_all_devices (line 133) | async def connect_all_devices(self) -> Dict[str, bool]: method disconnect_all_devices (line 137) | async def disconnect_all_devices(self) -> None: method ensure_devices_connected (line 141) | async def ensure_devices_connected(self) -> Dict[str, bool]: method get_device_status (line 151) | def get_device_status(self, device_id: Optional[str] = None) -> Dict[s... method get_connected_devices (line 161) | def get_connected_devices(self) -> List[str]: method get_constellation_info (line 165) | def get_constellation_info(self) -> Dict[str, Any]: method validate_config (line 179) | def validate_config( method get_config_summary (line 201) | def get_config_summary(self) -> Dict[str, Any]: method add_device_to_config (line 222) | async def add_device_to_config( method shutdown (line 251) | async def shutdown(self) -> None: function create_constellation_client (line 264) | async def create_constellation_client( FILE: galaxy/client/demo_device_events.py class DeviceEventMonitor (line 23) | class DeviceEventMonitor(IEventObserver): method __init__ (line 26) | def __init__(self, name: str = "DeviceMonitor"): method on_event (line 30) | async def on_event(self, event: Any) -> None: method _handle_device_event (line 36) | async def _handle_device_event(self, event: DeviceEvent) -> None: method _get_status_icon (line 84) | def _get_status_icon(status: str) -> str: class DeviceStatisticsMonitor (line 97) | class DeviceStatisticsMonitor(IEventObserver): method __init__ (line 100) | def __init__(self): method on_event (line 106) | async def on_event(self, event: Any) -> None: method print_statistics (line 118) | def print_statistics(self) -> None: function demo_device_events (line 130) | async def demo_device_events(): FILE: galaxy/client/device_manager.py class ConstellationDeviceManager (line 33) | class ConstellationDeviceManager: method __init__ (line 45) | def __init__( method _get_device_registry_snapshot (line 87) | def _get_device_registry_snapshot(self) -> Dict[str, Dict[str, Any]]: method _publish_device_event (line 116) | async def _publish_device_event( method register_device (line 174) | async def register_device( method connect_device (line 221) | async def connect_device( method disconnect_device (line 359) | async def disconnect_device(self, device_id: str) -> None: method _handle_device_disconnection (line 380) | async def _handle_device_disconnection(self, device_id: str) -> None: method _schedule_reconnection (line 454) | def _schedule_reconnection(self, device_id: str) -> None: method _reconnect_device (line 461) | async def _reconnect_device(self, device_id: str) -> None: method assign_task_to_device (line 543) | async def assign_task_to_device( method _execute_task_on_device (line 600) | async def _execute_task_on_device( method _process_next_queued_task (line 735) | async def _process_next_queued_task(self, device_id: str) -> None: method get_device_info (line 751) | def get_device_info(self, device_id: str) -> Optional[AgentProfile]: method get_connected_devices (line 755) | def get_connected_devices(self) -> List[str]: method get_device_capabilities (line 759) | def get_device_capabilities(self, device_id: str) -> Dict[str, Any]: method get_device_system_info (line 763) | def get_device_system_info(self, device_id: str) -> Optional[Dict[str,... method get_all_devices (line 773) | def get_all_devices(self, connected=False) -> Dict[str, AgentProfile]: method get_device_status (line 781) | def get_device_status(self, device_id: str) -> Dict[str, Any]: method get_task_queue_status (line 805) | def get_task_queue_status(self, device_id: str) -> Dict[str, Any]: method ensure_devices_connected (line 821) | async def ensure_devices_connected(self) -> Dict[str, bool]: method shutdown (line 878) | async def shutdown(self) -> None: FILE: galaxy/client/support/client_config_manager.py class ClientConfigManager (line 18) | class ClientConfigManager: method __init__ (line 24) | def __init__(self, device_manager: ConstellationDeviceManager): method initialize_from_config (line 33) | async def initialize_from_config( method register_device_from_config (line 72) | async def register_device_from_config(self, device_config: DeviceConfi... method add_device_to_config (line 94) | async def add_device_to_config( method validate_config (line 161) | def validate_config(self, config: ConstellationConfig) -> Dict[str, Any]: method _validate_device_config (line 221) | def _validate_device_config(self, device_config: DeviceConfig) -> Dict... method get_config_summary (line 273) | def get_config_summary(self, config: ConstellationConfig) -> Dict[str,... FILE: galaxy/client/support/status_manager.py class StatusManager (line 18) | class StatusManager: method __init__ (line 24) | def __init__( method get_device_status (line 42) | def get_device_status(self, device_id: Optional[str] = None) -> Dict[s... method _get_single_device_status (line 54) | def _get_single_device_status(self, device_id: str) -> Dict[str, Any]: method _get_all_devices_status (line 87) | def _get_all_devices_status(self) -> Dict[str, Any]: method get_connected_devices (line 99) | def get_connected_devices(self) -> List[str]: method get_constellation_info (line 103) | def get_constellation_info(self) -> Dict[str, Any]: method get_device_health_summary (line 127) | def get_device_health_summary(self) -> Dict[str, Any]: method get_task_statistics (line 168) | def get_task_statistics(self) -> Dict[str, Any]: method get_performance_metrics (line 187) | def get_performance_metrics(self) -> Dict[str, Any]: method _calculate_average_connection_attempts (line 208) | def _calculate_average_connection_attempts(self) -> float: method _calculate_overall_health_score (line 219) | def _calculate_overall_health_score( method get_diagnostics_report (line 243) | def get_diagnostics_report(self) -> Dict[str, Any]: FILE: galaxy/constellation/editor/command_history.py class CommandHistory (line 15) | class CommandHistory: method __init__ (line 23) | def __init__(self, max_history_size: int = 100): method add_command (line 33) | def add_command(self, command: IUndoableCommand) -> None: method can_undo (line 52) | def can_undo(self) -> bool: method can_redo (line 64) | def can_redo(self) -> bool: method undo (line 75) | def undo(self) -> Optional[IUndoableCommand]: method redo (line 93) | def redo(self) -> Optional[IUndoableCommand]: method clear (line 114) | def clear(self) -> None: method get_history (line 119) | def get_history(self) -> List[IUndoableCommand]: method get_current_command (line 127) | def get_current_command(self) -> Optional[IUndoableCommand]: method get_undo_description (line 137) | def get_undo_description(self) -> Optional[str]: method get_redo_description (line 147) | def get_redo_description(self) -> Optional[str]: method size (line 159) | def size(self) -> int: method current_index (line 164) | def current_index(self) -> int: method __len__ (line 168) | def __len__(self) -> int: method __str__ (line 172) | def __str__(self) -> str: FILE: galaxy/constellation/editor/command_interface.py class ICommand (line 14) | class ICommand(ABC): method execute (line 23) | def execute(self) -> Any: method can_execute (line 33) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 41) | def get_cannot_execute_reason(self) -> str: method description (line 54) | def description(self) -> str: class IUndoableCommand (line 63) | class IUndoableCommand(ICommand): method undo (line 71) | def undo(self) -> Any: method can_undo (line 81) | def can_undo(self) -> bool: method is_executed (line 91) | def is_executed(self) -> bool: class CommandExecutionError (line 100) | class CommandExecutionError(Exception): method __init__ (line 103) | def __init__( class CommandUndoError (line 114) | class CommandUndoError(Exception): method __init__ (line 117) | def __init__( FILE: galaxy/constellation/editor/command_invoker.py class CommandInvoker (line 16) | class CommandInvoker: method __init__ (line 24) | def __init__(self, enable_history: bool = True, max_history_size: int ... method execute (line 35) | def execute(self, command: ICommand) -> Any: method undo (line 67) | def undo(self) -> Optional[IUndoableCommand]: method redo (line 78) | def redo(self) -> Optional[IUndoableCommand]: method can_undo (line 89) | def can_undo(self) -> bool: method can_redo (line 101) | def can_redo(self) -> bool: method clear_history (line 113) | def clear_history(self) -> None: method get_history (line 118) | def get_history(self) -> List[IUndoableCommand]: method get_undo_description (line 128) | def get_undo_description(self) -> Optional[str]: method get_redo_description (line 138) | def get_redo_description(self) -> Optional[str]: method execution_count (line 149) | def execution_count(self) -> int: method history_enabled (line 154) | def history_enabled(self) -> bool: method history_size (line 159) | def history_size(self) -> int: method enable_history (line 163) | def enable_history(self, enable: bool = True, max_history_size: int = ... method __str__ (line 177) | def __str__(self) -> str: FILE: galaxy/constellation/editor/command_registry.py class CommandRegistry (line 13) | class CommandRegistry: method __init__ (line 16) | def __init__(self): method register (line 21) | def register( method get_command (line 61) | def get_command(self, name: str) -> Optional[Type[ICommand]]: method list_commands (line 70) | def list_commands( method get_command_metadata (line 88) | def get_command_metadata(self, name: str) -> Optional[Dict[str, Any]]: method is_registered (line 97) | def is_registered(self, name: str) -> bool: method unregister (line 106) | def unregister(self, name: str) -> bool: method clear (line 119) | def clear(self) -> None: method create_command (line 124) | def create_command(self, name: str, *args, **kwargs) -> Optional[IComm... method get_categories (line 142) | def get_categories(self) -> list[str]: function register_command (line 158) | def register_command( FILE: galaxy/constellation/editor/commands.py class BaseConstellationCommand (line 21) | class BaseConstellationCommand(IUndoableCommand): method __init__ (line 28) | def __init__(self, constellation: TaskConstellation, description: str): method constellation (line 41) | def constellation(self) -> TaskConstellation: method description (line 46) | def description(self) -> str: method is_executed (line 51) | def is_executed(self) -> bool: method _create_backup (line 55) | def _create_backup(self) -> None: method _restore_backup (line 70) | def _restore_backup(self) -> None: class AddTaskCommand (line 103) | class AddTaskCommand(BaseConstellationCommand): method __init__ (line 106) | def __init__(self, constellation: TaskConstellation, task_data: dict): method can_execute (line 118) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 124) | def get_cannot_execute_reason(self) -> str: method execute (line 134) | def execute(self) -> TaskStar: method can_undo (line 164) | def can_undo(self) -> bool: method undo (line 168) | def undo(self) -> None: class RemoveTaskCommand (line 191) | class RemoveTaskCommand(BaseConstellationCommand): method __init__ (line 194) | def __init__(self, constellation: TaskConstellation, task_id: str): method can_execute (line 206) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 215) | def get_cannot_execute_reason(self) -> str: method execute (line 229) | def execute(self) -> str: method can_undo (line 269) | def can_undo(self) -> bool: method undo (line 273) | def undo(self) -> None: class UpdateTaskCommand (line 296) | class UpdateTaskCommand(BaseConstellationCommand): method __init__ (line 299) | def __init__( method can_execute (line 314) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 319) | def get_cannot_execute_reason(self) -> str: method execute (line 329) | def execute(self) -> TaskStar: method can_undo (line 365) | def can_undo(self) -> bool: method undo (line 369) | def undo(self) -> None: class AddDependencyCommand (line 397) | class AddDependencyCommand(BaseConstellationCommand): method __init__ (line 400) | def __init__(self, constellation: TaskConstellation, dependency_data: ... method can_execute (line 415) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 424) | def get_cannot_execute_reason(self) -> str: method execute (line 438) | def execute(self) -> TaskStarLine: method can_undo (line 469) | def can_undo(self) -> bool: method undo (line 473) | def undo(self) -> None: class RemoveDependencyCommand (line 496) | class RemoveDependencyCommand(BaseConstellationCommand): method __init__ (line 499) | def __init__(self, constellation: TaskConstellation, dependency_id: str): method can_execute (line 510) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 517) | def get_cannot_execute_reason(self) -> str: method execute (line 526) | def execute(self) -> str: method can_undo (line 561) | def can_undo(self) -> bool: method undo (line 565) | def undo(self) -> None: class UpdateDependencyCommand (line 587) | class UpdateDependencyCommand(BaseConstellationCommand): method __init__ (line 590) | def __init__( method can_execute (line 608) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 613) | def get_cannot_execute_reason(self) -> str: method execute (line 623) | def execute(self) -> TaskStarLine: method can_undo (line 659) | def can_undo(self) -> bool: method undo (line 663) | def undo(self) -> None: class BuildConstellationCommand (line 691) | class BuildConstellationCommand(BaseConstellationCommand): method __init__ (line 694) | def __init__( method can_execute (line 712) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 716) | def get_cannot_execute_reason(self) -> str: method execute (line 724) | def execute(self) -> TaskConstellation: method can_undo (line 755) | def can_undo(self) -> bool: method undo (line 759) | def undo(self) -> None: class ClearConstellationCommand (line 778) | class ClearConstellationCommand(BaseConstellationCommand): method __init__ (line 781) | def __init__(self, constellation: TaskConstellation): method can_execute (line 789) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 793) | def get_cannot_execute_reason(self) -> str: method execute (line 799) | def execute(self) -> TaskConstellation: method can_undo (line 831) | def can_undo(self) -> bool: method undo (line 835) | def undo(self) -> None: class LoadConstellationCommand (line 854) | class LoadConstellationCommand(BaseConstellationCommand): method __init__ (line 857) | def __init__(self, constellation: TaskConstellation, file_path: str): method can_execute (line 867) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 873) | def get_cannot_execute_reason(self) -> str: method execute (line 883) | def execute(self) -> TaskConstellation: method can_undo (line 922) | def can_undo(self) -> bool: method undo (line 926) | def undo(self) -> None: class SaveConstellationCommand (line 945) | class SaveConstellationCommand(BaseConstellationCommand): method __init__ (line 948) | def __init__(self, constellation: TaskConstellation, file_path: str): method can_execute (line 960) | def can_execute(self) -> bool: method get_cannot_execute_reason (line 964) | def get_cannot_execute_reason(self) -> str: method execute (line 970) | def execute(self) -> str: method can_undo (line 995) | def can_undo(self) -> bool: method undo (line 999) | def undo(self) -> None: FILE: galaxy/constellation/editor/constellation_editor.py class ConstellationEditor (line 34) | class ConstellationEditor: method __init__ (line 42) | def __init__( method constellation (line 60) | def constellation(self) -> TaskConstellation: method invoker (line 65) | def invoker(self) -> CommandInvoker: method add_observer (line 69) | def add_observer(self, observer: callable) -> None: method remove_observer (line 78) | def remove_observer(self, observer: callable) -> None: method _notify_observers (line 87) | def _notify_observers(self, command: str, result: Any) -> None: method add_task (line 97) | def add_task(self, task: Union[TaskStar, Dict[str, Any]]) -> TaskStar: method create_and_add_task (line 115) | def create_and_add_task( method remove_task (line 130) | def remove_task(self, task_id: str) -> str: method update_task (line 143) | def update_task(self, task_id: str, **updates) -> TaskStar: method get_task (line 157) | def get_task(self, task_id: str) -> Optional[TaskStar]: method list_tasks (line 166) | def list_tasks(self) -> List[TaskStar]: method add_dependency (line 176) | def add_dependency( method create_and_add_dependency (line 196) | def create_and_add_dependency( method remove_dependency (line 226) | def remove_dependency(self, dependency_id: str) -> str: method update_dependency (line 239) | def update_dependency(self, dependency_id: str, **updates) -> TaskStar... method get_dependency (line 253) | def get_dependency(self, dependency_id: str) -> Optional[TaskStarLine]: method list_dependencies (line 262) | def list_dependencies(self) -> List[TaskStarLine]: method get_task_dependencies (line 270) | def get_task_dependencies(self, task_id: str) -> List[TaskStarLine]: method build_constellation (line 281) | def build_constellation( method build_from_tasks_and_dependencies (line 298) | def build_from_tasks_and_dependencies( method clear_constellation (line 320) | def clear_constellation(self) -> TaskConstellation: method load_constellation (line 334) | def load_constellation(self, file_path: str) -> TaskConstellation: method save_constellation (line 347) | def save_constellation(self, file_path: str) -> str: method load_from_dict (line 360) | def load_from_dict(self, data: Dict[str, Any]) -> TaskConstellation: method load_from_json_string (line 374) | def load_from_json_string(self, json_string: str) -> TaskConstellation: method undo (line 387) | def undo(self) -> bool: method redo (line 399) | def redo(self) -> bool: method can_undo (line 411) | def can_undo(self) -> bool: method can_redo (line 415) | def can_redo(self) -> bool: method get_undo_description (line 419) | def get_undo_description(self) -> Optional[str]: method get_redo_description (line 423) | def get_redo_description(self) -> Optional[str]: method clear_history (line 427) | def clear_history(self) -> None: method get_history (line 432) | def get_history(self) -> List[str]: method validate_constellation (line 442) | def validate_constellation(self) -> tuple[bool, List[str]]: method get_topological_order (line 450) | def get_topological_order(self) -> List[str]: method has_cycles (line 459) | def has_cycles(self) -> bool: method get_ready_tasks (line 463) | def get_ready_tasks(self) -> List[TaskStar]: method get_statistics (line 467) | def get_statistics(self) -> Dict[str, Any]: method batch_operations (line 482) | def batch_operations(self, operations: List[callable]) -> List[Any]: method create_subgraph (line 498) | def create_subgraph(self, task_ids: List[str]) -> "ConstellationEditor": method merge_constellation (line 532) | def merge_constellation( method display_constellation (line 570) | def display_constellation(self, mode: str = "overview") -> None: method list_available_commands (line 579) | def list_available_commands( method get_command_metadata (line 590) | def get_command_metadata(self, command_name: str) -> Optional[Dict[str... method execute_command_by_name (line 599) | def execute_command_by_name(self, command_name: str, *args, **kwargs) ... method get_command_categories (line 616) | def get_command_categories(self) -> List[str]: method __str__ (line 624) | def __str__(self) -> str: method __repr__ (line 634) | def __repr__(self) -> str: FILE: galaxy/constellation/enums.py class TaskStatus (line 14) | class TaskStatus(Enum): class DependencyType (line 27) | class DependencyType(Enum): class ConstellationState (line 40) | class ConstellationState(Enum): class TaskPriority (line 54) | class TaskPriority(Enum): class DeviceType (line 65) | class DeviceType(Enum): FILE: galaxy/constellation/orchestrator/constellation_manager.py class ConstellationManager (line 19) | class ConstellationManager: method __init__ (line 30) | def __init__( method set_device_manager (line 48) | def set_device_manager(self, device_manager: ConstellationDeviceManage... method register_constellation (line 58) | def register_constellation( method unregister_constellation (line 81) | def unregister_constellation(self, constellation_id: str) -> bool: method get_constellation (line 101) | def get_constellation(self, constellation_id: str) -> Optional[TaskCon... method list_constellations (line 110) | def list_constellations(self) -> List[Dict[str, Any]]: method assign_devices_automatically (line 132) | async def assign_devices_automatically( method _assign_round_robin (line 187) | async def _assign_round_robin( method _assign_capability_match (line 212) | async def _assign_capability_match( method _assign_load_balance (line 249) | async def _assign_load_balance( method get_constellation_status (line 275) | async def get_constellation_status( method get_available_devices (line 306) | async def get_available_devices(self) -> List[Dict[str, Any]]: method _get_available_devices (line 314) | async def _get_available_devices(self) -> List[Dict[str, Any]]: method validate_constellation_assignments (line 346) | def validate_constellation_assignments( method get_task_device_info (line 375) | def get_task_device_info( method reassign_task_device (line 410) | def reassign_task_device( method clear_device_assignments (line 438) | def clear_device_assignments(self, constellation: TaskConstellation) -... method get_device_utilization (line 459) | def get_device_utilization( FILE: galaxy/constellation/orchestrator/orchestrator.py class TaskConstellationOrchestrator (line 31) | class TaskConstellationOrchestrator: method __init__ (line 40) | def __init__( method set_device_manager (line 78) | def set_device_manager(self, device_manager: ConstellationDeviceManage... method set_modification_synchronizer (line 87) | def set_modification_synchronizer( method cancel_execution (line 99) | async def cancel_execution(self, constellation_id: str) -> bool: method orchestrate_constellation (line 143) | async def orchestrate_constellation( method _validate_and_prepare_constellation (line 226) | async def _validate_and_prepare_constellation( method _assign_devices_to_tasks (line 269) | async def _assign_devices_to_tasks( method _validate_existing_device_assignments (line 298) | def _validate_existing_device_assignments( method _start_constellation_execution (line 357) | async def _start_constellation_execution( method _run_execution_loop (line 394) | async def _run_execution_loop(self, constellation: TaskConstellation) ... method _sync_constellation_modifications (line 434) | async def _sync_constellation_modifications( method _schedule_ready_tasks (line 468) | async def _schedule_ready_tasks( method _wait_for_task_completion (line 484) | async def _wait_for_task_completion(self) -> None: method _cleanup_completed_tasks (line 499) | async def _cleanup_completed_tasks(self, done_futures: set) -> None: method _wait_for_all_tasks (line 515) | async def _wait_for_all_tasks(self) -> None: method _finalize_constellation_execution (line 538) | async def _finalize_constellation_execution( method _handle_orchestration_failure (line 580) | async def _handle_orchestration_failure( method _cleanup_constellation (line 593) | async def _cleanup_constellation(self, constellation: TaskConstellatio... method _execute_task_with_events (line 603) | async def _execute_task_with_events( method execute_single_task (line 698) | async def execute_single_task( method get_constellation_status (line 726) | async def get_constellation_status( method get_available_devices (line 739) | async def get_available_devices(self) -> List[Dict[str, Any]]: method assign_devices_automatically (line 747) | async def assign_devices_automatically( FILE: galaxy/constellation/task_constellation.py class TaskConstellation (line 31) | class TaskConstellation(IConstellation): method __init__ (line 45) | def __init__( method constellation_id (line 77) | def constellation_id(self) -> str: method name (line 82) | def name(self) -> str: method name (line 87) | def name(self, value: str) -> None: method state (line 93) | def state(self) -> ConstellationState: method tasks (line 98) | def tasks(self) -> Dict[str, TaskStar]: method dependencies (line 103) | def dependencies(self) -> Dict[str, TaskStarLine]: method task_count (line 108) | def task_count(self) -> int: method dependency_count (line 113) | def dependency_count(self) -> int: method created_at (line 118) | def created_at(self) -> datetime: method updated_at (line 123) | def updated_at(self) -> datetime: method execution_start_time (line 128) | def execution_start_time(self) -> Optional[datetime]: method execution_end_time (line 133) | def execution_end_time(self) -> Optional[datetime]: method execution_duration (line 138) | def execution_duration(self) -> Optional[float]: method metadata (line 147) | def metadata(self) -> Dict[str, Any]: method update_metadata (line 151) | def update_metadata(self, metadata: Dict[str, Any]) -> None: method add_task (line 156) | def add_task(self, task: TaskStar) -> None: method remove_task (line 172) | def remove_task(self, task_id: str) -> None: method get_task (line 201) | def get_task(self, task_id: str) -> Optional[TaskStar]: method add_dependency (line 210) | def add_dependency(self, dependency: TaskStarLine) -> None: method remove_dependency (line 244) | def remove_dependency(self, dependency_id: str) -> None: method get_dependency (line 270) | def get_dependency(self, dependency_id: str) -> Optional[TaskStarLine]: method get_ready_tasks (line 279) | def get_ready_tasks(self) -> List[TaskStar]: method get_running_tasks (line 296) | def get_running_tasks(self) -> List[TaskStar]: method get_completed_tasks (line 302) | def get_completed_tasks(self) -> List[TaskStar]: method get_failed_tasks (line 308) | def get_failed_tasks(self) -> List[TaskStar]: method get_pending_tasks (line 314) | def get_pending_tasks(self) -> List[TaskStar]: method get_all_tasks (line 320) | def get_all_tasks(self) -> List[TaskStar]: method get_all_dependencies (line 324) | def get_all_dependencies(self) -> List[TaskStarLine]: method get_task_dependencies (line 328) | def get_task_dependencies(self, task_id: str) -> List[TaskStarLine]: method get_modifiable_tasks (line 332) | def get_modifiable_tasks(self) -> List[TaskStar]: method get_modifiable_dependencies (line 343) | def get_modifiable_dependencies(self) -> List[TaskStarLine]: method is_task_modifiable (line 360) | def is_task_modifiable(self, task_id: str) -> bool: method is_dependency_modifiable (line 372) | def is_dependency_modifiable(self, dependency_id: str) -> bool: method is_complete (line 387) | def is_complete(self) -> bool: method update_state (line 391) | def update_state(self) -> None: method start_task (line 420) | def start_task(self, task_id: str) -> None: method mark_task_completed (line 436) | def mark_task_completed( method validate_dag (line 483) | def validate_dag(self) -> Tuple[bool, List[str]]: method get_topological_order (line 508) | def get_topological_order(self) -> List[str]: method get_longest_path (line 549) | def get_longest_path(self) -> Tuple[int, List[str]]: method get_max_width (line 610) | def get_max_width(self) -> int: method get_critical_path_length_with_time (line 651) | def get_critical_path_length_with_time(self) -> Tuple[float, List[str]]: method get_total_work (line 724) | def get_total_work(self) -> float: method get_parallelism_metrics (line 737) | def get_parallelism_metrics(self) -> Dict[str, Any]: method get_statistics (line 799) | def get_statistics(self) -> Dict[str, Any]: method to_dict (line 846) | def to_dict(self) -> Dict[str, Any]: method _parse_constellation_state (line 885) | def _parse_constellation_state(state_value: Any) -> ConstellationState: method from_dict (line 909) | def from_dict(cls, data: Dict[str, Any]) -> "TaskConstellation": method to_json (line 953) | def to_json(self, save_path: Optional[str] = None) -> str: method _ensure_json_serializable (line 994) | def _ensure_json_serializable(self, data: Any) -> Any: method from_json (line 1058) | def from_json( method from_basemodel (line 1105) | def from_basemodel(cls, schema: "TaskConstellationSchema") -> "TaskCon... method to_basemodel (line 1121) | def to_basemodel(self) -> "TaskConstellationSchema": method _are_dependencies_satisfied (line 1133) | def _are_dependencies_satisfied(self, task_id: str) -> bool: method _would_create_cycle (line 1158) | def _would_create_cycle(self, from_task_id: str, to_task_id: str) -> b... method has_cycle (line 1181) | def has_cycle(self) -> bool: method start_execution (line 1189) | def start_execution(self) -> None: method complete_execution (line 1196) | def complete_execution(self) -> None: method display_dag (line 1202) | def display_dag(self, mode: str = "overview") -> None: method __str__ (line 1224) | def __str__(self) -> str: method __repr__ (line 1228) | def __repr__(self) -> str: FILE: galaxy/constellation/task_star.py class TaskStar (line 28) | class TaskStar(ITask): method __init__ (line 42) | def __init__( method task_id (line 115) | def task_id(self) -> TaskId: method name (line 120) | def name(self) -> str: method name (line 125) | def name(self, value: str) -> None: method description (line 138) | def description(self) -> str: method description (line 143) | def description(self, value: str) -> None: method tips (line 158) | def tips(self) -> List[str]: method tips (line 163) | def tips(self, value: List[str]) -> None: method description (line 176) | def description(self, value: str) -> None: method execute (line 190) | async def execute( method validate (line 258) | def validate(self) -> bool: method get_validation_errors (line 296) | def get_validation_errors(self) -> List[str]: method task_description (line 306) | def task_description(self) -> str: method task_description (line 311) | def task_description(self, value: str) -> None: method target_device_id (line 316) | def target_device_id(self) -> Optional[str]: method target_device_id (line 321) | def target_device_id(self, value: Optional[str]) -> None: method device_type (line 331) | def device_type(self) -> Optional[DeviceType]: method device_type (line 336) | def device_type(self, value: Optional[DeviceType]) -> None: method priority (line 346) | def priority(self) -> TaskPriority: method priority (line 351) | def priority(self, value: TaskPriority) -> None: method status (line 359) | def status(self) -> TaskStatus: method result (line 364) | def result(self) -> Optional[Any]: method error (line 369) | def error(self) -> Optional[Exception]: method execution_start_time (line 374) | def execution_start_time(self) -> Optional[datetime]: method execution_end_time (line 379) | def execution_end_time(self) -> Optional[datetime]: method execution_duration (line 384) | def execution_duration(self) -> Optional[float]: method created_at (line 393) | def created_at(self) -> datetime: method updated_at (line 398) | def updated_at(self) -> datetime: method is_terminal (line 403) | def is_terminal(self) -> bool: method is_ready_to_execute (line 412) | def is_ready_to_execute(self) -> bool: method task_data (line 417) | def task_data(self) -> Dict[str, Any]: method update_task_data (line 421) | def update_task_data(self, data: Dict[str, Any]) -> None: method start_execution (line 434) | def start_execution(self) -> None: method complete_with_success (line 454) | def complete_with_success(self, result: Any) -> None: method complete_with_failure (line 471) | def complete_with_failure(self, error: Exception) -> None: method cancel (line 488) | def cancel(self) -> None: method should_retry (line 496) | def should_retry(self) -> bool: method retry (line 503) | def retry(self) -> None: method add_dependency (line 519) | def add_dependency(self, dependency_task_id: TaskId) -> None: method remove_dependency (line 527) | def remove_dependency(self, dependency_task_id: TaskId) -> None: method add_dependent (line 535) | def add_dependent(self, dependent_task_id: TaskId) -> None: method remove_dependent (line 543) | def remove_dependent(self, dependent_task_id: TaskId) -> None: method to_request_string (line 551) | def to_request_string(self): method to_dict (line 562) | def to_dict(self) -> Dict[str, Any]: method _serialize_result (line 602) | def _serialize_result(self, result: Any) -> Any: method _serialize_task_data (line 654) | def _serialize_task_data(self, task_data: Dict[str, Any]) -> Dict[str,... method _parse_priority (line 672) | def _parse_priority(priority_value: Any) -> TaskPriority: method _parse_device_type (line 700) | def _parse_device_type(device_type_value: Any) -> Optional[DeviceType]: method _parse_status (line 727) | def _parse_status(status_value: Any) -> TaskStatus: method from_dict (line 751) | def from_dict(cls, data: Dict[str, Any]) -> "TaskStar": method from_basemodel (line 799) | def from_basemodel(cls, schema: "TaskStarSchema") -> "TaskStar": method to_basemodel (line 815) | def to_basemodel(self) -> "TaskStarSchema": method from_json (line 828) | def from_json( method to_json (line 874) | def to_json(self, save_path: Optional[str] = None) -> str: method _ensure_json_serializable (line 905) | def _ensure_json_serializable(self, data: Dict[str, Any]) -> Dict[str,... method __str__ (line 941) | def __str__(self) -> str: method __repr__ (line 945) | def __repr__(self) -> str: FILE: galaxy/constellation/task_star_line.py class TaskStarLine (line 22) | class TaskStarLine(IDependency): method __init__ (line 35) | def __init__( method line_id (line 73) | def line_id(self) -> str: method from_task_id (line 78) | def from_task_id(self) -> str: method to_task_id (line 83) | def to_task_id(self) -> str: method source_task_id (line 88) | def source_task_id(self) -> str: method target_task_id (line 93) | def target_task_id(self) -> str: method dependency_type (line 98) | def dependency_type(self) -> DependencyType: method dependency_type (line 103) | def dependency_type(self, value: DependencyType) -> None: method condition_description (line 112) | def condition_description(self) -> str: method condition_description (line 117) | def condition_description(self, value: str) -> None: method is_satisfied (line 122) | def is_satisfied(self, completed_tasks: Optional[List[str]] = None) ->... method last_evaluation_result (line 135) | def last_evaluation_result(self) -> Optional[bool]: method last_evaluation_time (line 140) | def last_evaluation_time(self) -> Optional[datetime]: method created_at (line 145) | def created_at(self) -> datetime: method updated_at (line 150) | def updated_at(self) -> datetime: method metadata (line 155) | def metadata(self) -> Dict[str, Any]: method update_metadata (line 159) | def update_metadata(self, metadata: Dict[str, Any]) -> None: method set_condition_evaluator (line 169) | def set_condition_evaluator(self, evaluator: Callable[[Any], bool]) ->... method evaluate_condition (line 182) | def evaluate_condition(self, prerequisite_result: Any) -> bool: method mark_satisfied (line 220) | def mark_satisfied(self) -> None: method reset_satisfaction (line 227) | def reset_satisfaction(self) -> None: method to_dict (line 234) | def to_dict(self) -> Dict[str, Any]: method _parse_dependency_type (line 259) | def _parse_dependency_type(dep_type_value: Any) -> DependencyType: method from_dict (line 283) | def from_dict(cls, data: Dict[str, Any]) -> "TaskStarLine": method from_basemodel (line 318) | def from_basemodel(cls, schema: "TaskStarLineSchema") -> "TaskStarLine": method to_basemodel (line 334) | def to_basemodel(self) -> "TaskStarLineSchema": method to_json (line 346) | def to_json(self, save_path: Optional[str] = None) -> str: method _ensure_json_serializable (line 375) | def _ensure_json_serializable(self, data: Dict[str, Any]) -> Dict[str,... method from_json (line 412) | def from_json( method create_unconditional (line 459) | def create_unconditional( method create_success_only (line 481) | def create_success_only( method create_conditional (line 503) | def create_conditional( method __str__ (line 527) | def __str__(self) -> str: method __repr__ (line 531) | def __repr__(self) -> str: FILE: galaxy/core/di_container.py class LifecycleScope (line 31) | class LifecycleScope(Enum): class DependencyInjectionError (line 39) | class DependencyInjectionError(GalaxyFrameworkError): class ServiceDescriptor (line 45) | class ServiceDescriptor: method __init__ (line 48) | def __init__( class IDependencyContainer (line 78) | class IDependencyContainer(ABC): method register_singleton (line 82) | def register_singleton( method register_transient (line 100) | def register_transient( method register_scoped (line 116) | def register_scoped( method resolve (line 132) | def resolve(self, service_type: Type[T]) -> T: method try_resolve (line 142) | def try_resolve(self, service_type: Type[T]) -> Optional[T]: class DependencyContainer (line 152) | class DependencyContainer(IDependencyContainer): method __init__ (line 160) | def __init__(self): method register_singleton (line 168) | def register_singleton( method register_transient (line 196) | def register_transient( method register_scoped (line 218) | def register_scoped( method resolve (line 240) | def resolve(self, service_type: Type[T]) -> T: method try_resolve (line 255) | def try_resolve(self, service_type: Type[T]) -> Optional[T]: method _create_instance (line 293) | def _create_instance(self, descriptor: ServiceDescriptor) -> Optional[... method _create_with_constructor_injection (line 337) | def _create_with_constructor_injection(self, implementation_type: Type... method _call_with_injection (line 383) | def _call_with_injection(self, factory: Callable[..., T]) -> T: method clear_scoped (line 422) | def clear_scoped(self) -> None: method get_registered_services (line 427) | def get_registered_services(self) -> List[Type]: method is_registered (line 435) | def is_registered(self, service_type: Type) -> bool: function get_container (line 449) | def get_container() -> DependencyContainer: function set_container (line 461) | def set_container(container: DependencyContainer) -> None: function resolve (line 471) | def resolve(service_type: Type[T]) -> T: function try_resolve (line 481) | def try_resolve(service_type: Type[T]) -> Optional[T]: function injectable (line 492) | def injectable( FILE: galaxy/core/events.py class EventType (line 16) | class EventType(Enum): class Event (line 50) | class Event: class TaskEvent (line 65) | class TaskEvent(Event): class ConstellationEvent (line 80) | class ConstellationEvent(Event): class AgentEvent (line 94) | class AgentEvent(Event): class DeviceEvent (line 109) | class DeviceEvent(Event): class IEventObserver (line 123) | class IEventObserver(ABC): method on_event (line 132) | async def on_event(self, event: Event) -> None: class IEventPublisher (line 145) | class IEventPublisher(ABC): method subscribe (line 154) | def subscribe( method unsubscribe (line 170) | def unsubscribe(self, observer: IEventObserver) -> None: method publish_event (line 183) | async def publish_event(self, event: Event) -> None: class EventBus (line 196) | class EventBus(IEventPublisher): method __init__ (line 204) | def __init__(self): method subscribe (line 217) | def subscribe( method unsubscribe (line 242) | def unsubscribe(self, observer: IEventObserver) -> None: method publish_event (line 256) | async def publish_event(self, event: Event) -> None: function get_event_bus (line 290) | def get_event_bus() -> EventBus: FILE: galaxy/core/interfaces.py class ITask (line 30) | class ITask(ABC): method task_id (line 35) | def task_id(self) -> TaskId: method name (line 41) | def name(self) -> str: method description (line 47) | def description(self) -> str: method execute (line 52) | async def execute( method validate (line 64) | def validate(self) -> bool: class ITaskFactory (line 73) | class ITaskFactory(ABC): method create_task (line 77) | def create_task( method supports_task_type (line 96) | def supports_task_type(self, task_type: str) -> bool: class IDependency (line 107) | class IDependency(ABC): method source_task_id (line 112) | def source_task_id(self) -> TaskId: method target_task_id (line 118) | def target_task_id(self) -> TaskId: method dependency_type (line 124) | def dependency_type(self) -> str: method is_satisfied (line 129) | def is_satisfied(self, completed_tasks: List[TaskId]) -> bool: class IDependencyResolver (line 139) | class IDependencyResolver(ABC): method get_ready_tasks (line 143) | def get_ready_tasks( method validate_dependencies (line 160) | def validate_dependencies( class IConstellation (line 174) | class IConstellation(ABC): method constellation_id (line 179) | def constellation_id(self) -> ConstellationId: method name (line 185) | def name(self) -> str: method tasks (line 191) | def tasks(self) -> Dict[TaskId, ITask]: method dependencies (line 197) | def dependencies(self) -> List[IDependency]: method add_task (line 202) | def add_task(self, task: ITask) -> None: method add_dependency (line 211) | def add_dependency(self, dependency: IDependency) -> None: method get_ready_tasks (line 220) | def get_ready_tasks( class IConstellationBuilder (line 232) | class IConstellationBuilder(ABC): method create_constellation (line 236) | def create_constellation(self, name: str) -> IConstellation: method add_task (line 246) | def add_task(self, constellation: IConstellation, task: ITask) -> ICon... method add_dependency (line 257) | def add_dependency( class ITaskExecutor (line 277) | class ITaskExecutor(ABC): method execute_task (line 281) | async def execute_task( method can_execute (line 294) | def can_execute(self, task: ITask) -> bool: class IConstellationExecutor (line 304) | class IConstellationExecutor(ABC): method execute_constellation (line 308) | async def execute_constellation( method pause_execution (line 327) | async def pause_execution(self, constellation_id: ConstellationId) -> ... method resume_execution (line 337) | async def resume_execution(self, constellation_id: ConstellationId) ->... method cancel_execution (line 347) | async def cancel_execution(self, constellation_id: ConstellationId) ->... class IDevice (line 358) | class IDevice(ABC): method device_id (line 363) | def device_id(self) -> DeviceId: method device_type (line 369) | def device_type(self) -> str: method capabilities (line 375) | def capabilities(self) -> List[str]: method is_connected (line 381) | def is_connected(self) -> bool: method connect (line 386) | async def connect(self) -> bool: method disconnect (line 395) | async def disconnect(self) -> bool: method execute_task (line 404) | async def execute_task(self, task: ITask) -> ExecutionResult: class IDeviceRegistry (line 414) | class IDeviceRegistry(ABC): method register_device (line 418) | async def register_device(self, device: IDevice) -> bool: method unregister_device (line 428) | async def unregister_device(self, device_id: DeviceId) -> bool: method get_device (line 438) | async def get_device(self, device_id: DeviceId) -> Optional[IDevice]: method get_available_devices (line 448) | async def get_available_devices( class IDeviceSelector (line 460) | class IDeviceSelector(ABC): method select_device (line 464) | async def select_device( class IRequestProcessor (line 482) | class IRequestProcessor(ABC): method process_creation (line 486) | async def process_creation( class IResultProcessor (line 498) | class IResultProcessor(ABC): method process_editing (line 502) | async def process_editing( class IConstellationUpdater (line 515) | class IConstellationUpdater(ABC): method should_update (line 519) | async def should_update( method update_constellation (line 532) | async def update_constellation( class ISessionManager (line 550) | class ISessionManager(ABC): method create_session (line 554) | async def create_session( method get_session (line 571) | async def get_session(self, session_id: SessionId) -> Optional["ISessi... method end_session (line 581) | async def end_session(self, session_id: SessionId) -> bool: class ISession (line 591) | class ISession(ABC): method session_id (line 596) | def session_id(self) -> SessionId: method is_active (line 602) | def is_active(self) -> bool: method process_request (line 607) | async def process_request(self, request: str) -> ConstellationResult: method get_status (line 617) | async def get_status(self) -> Dict[str, Any]: class IMetricsCollector (line 627) | class IMetricsCollector(ABC): method record_task_execution (line 631) | def record_task_execution(self, result: ExecutionResult) -> None: method record_constellation_execution (line 640) | def record_constellation_execution(self, result: ConstellationResult) ... method get_metrics (line 649) | def get_metrics(self) -> Dict[str, Any]: class IEventLogger (line 658) | class IEventLogger(ABC): method log_event (line 662) | def log_event( method get_events (line 678) | def get_events( FILE: galaxy/core/types.py class TaskStatus (line 38) | class TaskStatus(Enum): class ConstellationState (line 46) | class ConstellationState(Enum): class TaskPriority (line 54) | class TaskPriority(Enum): class DeviceType (line 60) | class DeviceType(Enum): class DependencyType (line 69) | class DependencyType(Enum): class ExecutionResult (line 97) | class ExecutionResult: method execution_time (line 109) | def execution_time(self) -> Optional[float]: method is_successful (line 116) | def is_successful(self) -> bool: class ConstellationResult (line 122) | class ConstellationResult: method execution_time (line 133) | def execution_time(self) -> Optional[float]: method success_rate (line 140) | def success_rate(self) -> float: class TaskConfiguration (line 152) | class TaskConfiguration: class ConstellationConfiguration (line 163) | class ConstellationConfiguration: class DeviceConfiguration (line 174) | class DeviceConfiguration: class IExecutable (line 186) | class IExecutable(Protocol): method execute (line 189) | async def execute(self, context: Optional[TContext] = None) -> Executi... class IConfigurable (line 195) | class IConfigurable(Protocol): method configure (line 198) | def configure(self, config: Dict[str, Any]) -> None: class IObservable (line 204) | class IObservable(Protocol): method add_observer (line 207) | def add_observer(self, observer: Callable[[Any], None]) -> None: method remove_observer (line 211) | def remove_observer(self, observer: Callable[[Any], None]) -> None: method notify_observers (line 215) | def notify_observers(self, event: Any) -> None: class IValidatable (line 221) | class IValidatable(Protocol): method validate (line 224) | def validate(self) -> bool: method get_validation_errors (line 228) | def get_validation_errors(self) -> List[str]: class ITaskProcessor (line 234) | class ITaskProcessor(ABC): method process_task (line 238) | async def process_task( class IConstellationManager (line 251) | class IConstellationManager(ABC): method create_constellation (line 255) | async def create_constellation( method execute_constellation (line 268) | async def execute_constellation( class IDeviceManager (line 283) | class IDeviceManager(ABC): method register_device (line 287) | async def register_device(self, device_config: DeviceConfiguration) ->... method get_available_devices (line 297) | async def get_available_devices( method assign_task_to_device (line 309) | async def assign_task_to_device( class IAgentProcessor (line 322) | class IAgentProcessor(ABC): method process_request (line 326) | async def process_request( method process_result (line 339) | async def process_result( class ITask (line 357) | class ITask(Protocol): class IDependency (line 365) | class IDependency(Protocol): class IConstellation (line 373) | class IConstellation(Protocol): class GalaxyFrameworkError (line 383) | class GalaxyFrameworkError(Exception): method __init__ (line 386) | def __init__( class TaskExecutionError (line 398) | class TaskExecutionError(GalaxyFrameworkError): method __init__ (line 401) | def __init__( class ConstellationError (line 409) | class ConstellationError(GalaxyFrameworkError): method __init__ (line 412) | def __init__(self, constellation_id: ConstellationId, message: str): class DeviceError (line 417) | class DeviceError(GalaxyFrameworkError): method __init__ (line 420) | def __init__(self, device_id: DeviceId, message: str): class ConfigurationError (line 425) | class ConfigurationError(GalaxyFrameworkError): class ValidationError (line 431) | class ValidationError(GalaxyFrameworkError): method __init__ (line 434) | def __init__(self, message: str, validation_errors: List[str]): class Statistics (line 441) | class Statistics: method update_from_result (line 451) | def update_from_result(self, result: ExecutionResult) -> None: class ProcessingContext (line 474) | class ProcessingContext: method to_dict (line 486) | def to_dict(self) -> Dict[str, Any]: FILE: galaxy/galaxy.py function parse_args (line 37) | def parse_args(): function galaxy_quick_start (line 139) | async def galaxy_quick_start( function galaxy_interactive (line 165) | async def galaxy_interactive( function main (line 191) | async def main(): function run_demo_with_client (line 283) | async def run_demo_with_client(client: GalaxyClient): function run_webui_mode (line 315) | async def run_webui_mode(client: GalaxyClient): FILE: galaxy/galaxy_client.py class GalaxyClient (line 40) | class GalaxyClient: method __init__ (line 51) | def __init__( method initialize (line 107) | async def initialize(self) -> None: method process_request (line 150) | async def process_request(self, request: str) -> Dict[str, Any]: method interactive_mode (line 317) | async def interactive_mode(self) -> None: method _show_status (line 378) | def _show_status(self) -> None: method _save_result (line 391) | def _save_result(self, result: Dict[str, Any]) -> None: method reset_session (line 427) | async def reset_session(self) -> Dict[str, Any]: method create_next_session (line 468) | async def create_next_session(self) -> Dict[str, Any]: method shutdown (line 538) | async def shutdown(self, force: bool = False) -> None: FILE: galaxy/session/galaxy_session.py class GalaxyRound (line 43) | class GalaxyRound(BaseRound): method __init__ (line 48) | def __init__( method run (line 71) | async def run(self) -> None: method is_finished (line 136) | def is_finished(self): method force_finish (line 153) | def force_finish(self) -> None: method constellation (line 161) | def constellation(self) -> Optional[TaskConstellation]: class GalaxySession (line 170) | class GalaxySession(BaseSession): method __init__ (line 178) | def __init__( method _init_context (line 247) | def _init_context(self) -> None: method _init_agents (line 273) | def _init_agents(self) -> None: method _setup_observers (line 279) | def _setup_observers(self) -> None: method run (line 324) | async def run(self) -> None: method is_error (line 386) | def is_error(self) -> bool: method is_finished (line 411) | def is_finished(self) -> bool: method create_new_round (line 430) | def create_new_round(self) -> Optional[GalaxyRound]: method next_request (line 453) | def next_request(self) -> str: method request_to_evaluate (line 464) | def request_to_evaluate(self) -> str: method set_agent (line 472) | def set_agent(self, agent: ConstellationAgent) -> None: method force_finish (line 480) | async def force_finish(self, reason: str = "Manual termination") -> None: method request_cancellation (line 495) | async def request_cancellation(self) -> None: method reset (line 521) | def reset(self) -> None: method _cleanup_observers (line 565) | def _cleanup_observers(self) -> None: method current_constellation (line 577) | def current_constellation(self) -> Optional[TaskConstellation]: method agent (line 586) | def agent(self) -> ConstellationAgent: method orchestrator (line 595) | def orchestrator(self) -> TaskConstellationOrchestrator: method session_results (line 604) | def session_results(self) -> Dict[str, Any]: FILE: galaxy/session/observers/agent_output_observer.py class AgentOutputObserver (line 26) | class AgentOutputObserver(IEventObserver): method __init__ (line 34) | def __init__(self, presenter_type: str = "rich"): method on_event (line 45) | async def on_event(self, event: Event) -> None: method _handle_agent_response (line 62) | async def _handle_agent_response(self, event: AgentEvent) -> None: method _handle_agent_action (line 90) | async def _handle_agent_action(self, event: AgentEvent) -> None: FILE: galaxy/session/observers/base_observer.py class ConstellationProgressObserver (line 22) | class ConstellationProgressObserver(IEventObserver): method __init__ (line 29) | def __init__(self, agent: ConstellationAgent): method on_event (line 39) | async def on_event(self, event: Event) -> None: method _handle_task_event (line 50) | async def _handle_task_event(self, event: TaskEvent) -> None: method _handle_constellation_event (line 85) | async def _handle_constellation_event(self, event: ConstellationEvent)... class SessionMetricsObserver (line 105) | class SessionMetricsObserver(IEventObserver): method __init__ (line 110) | def __init__(self, session_id: str, logger: Optional[logging.Logger] =... method on_event (line 133) | async def on_event(self, event: Event) -> None: method _handle_task_event (line 144) | async def _handle_task_event(self, event: TaskEvent) -> None: method _handle_constellation_event (line 157) | async def _handle_constellation_event(self, event: ConstellationEvent)... method _handle_task_started (line 170) | def _handle_task_started(self, event: TaskEvent) -> None: method _handle_task_completed (line 179) | def _handle_task_completed(self, event: TaskEvent) -> None: method _handle_task_failed (line 195) | def _handle_task_failed(self, event: TaskEvent) -> None: method _handle_constellation_started (line 210) | def _handle_constellation_started(self, event: ConstellationEvent) -> ... method _handle_constellation_completed (line 233) | def _handle_constellation_completed(self, event: ConstellationEvent) -... method _handle_constellation_modified (line 262) | def _handle_constellation_modified(self, event: ConstellationEvent) ->... method get_metrics (line 307) | def get_metrics(self) -> Dict[str, Any]: method _compute_task_statistics (line 329) | def _compute_task_statistics(self) -> Dict[str, Any]: method _compute_constellation_statistics (line 367) | def _compute_constellation_statistics(self) -> Dict[str, Any]: method _compute_modification_statistics (line 417) | def _compute_modification_statistics(self) -> Dict[str, Any]: FILE: galaxy/session/observers/constellation_sync_observer.py class ConstellationModificationSynchronizer (line 45) | class ConstellationModificationSynchronizer(IEventObserver): method __init__ (line 58) | def __init__( method on_event (line 89) | async def on_event(self, event: Event) -> None: method _handle_task_event (line 100) | async def _handle_task_event(self, event: TaskEvent) -> None: method _handle_constellation_event (line 152) | async def _handle_constellation_event(self, event: ConstellationEvent)... method _auto_complete_on_timeout (line 218) | async def _auto_complete_on_timeout( method wait_for_pending_modifications (line 247) | async def wait_for_pending_modifications( method get_current_constellation (line 313) | def get_current_constellation(self) -> Optional[TaskConstellation]: method has_pending_modifications (line 322) | def has_pending_modifications(self) -> bool: method get_pending_count (line 330) | def get_pending_count(self) -> int: method get_pending_task_ids (line 338) | def get_pending_task_ids(self) -> list: method get_statistics (line 346) | def get_statistics(self) -> Dict[str, int]: method clear_pending_modifications (line 354) | def clear_pending_modifications(self) -> None: method set_modification_timeout (line 373) | def set_modification_timeout(self, timeout: float) -> None: method merge_and_sync_constellation_states (line 384) | def merge_and_sync_constellation_states( method _is_state_more_advanced (line 453) | def _is_state_more_advanced(self, state1, state2) -> bool: FILE: galaxy/session/observers/constellation_visualization_handler.py class ConstellationVisualizationHandler (line 18) | class ConstellationVisualizationHandler: method __init__ (line 26) | def __init__( method handle_constellation_started (line 39) | async def handle_constellation_started( method handle_constellation_completed (line 67) | async def handle_constellation_completed( method handle_constellation_failed (line 97) | async def handle_constellation_failed( method handle_constellation_modified (line 127) | async def handle_constellation_modified( method handle_constellation_event (line 184) | async def handle_constellation_event( FILE: galaxy/session/observers/dag_visualization_observer.py class DAGVisualizationObserver (line 19) | class DAGVisualizationObserver(IEventObserver): method __init__ (line 28) | def __init__(self, enable_visualization: bool = True, console=None): method _init_visualizer (line 51) | def _init_visualizer(self) -> None: method on_event (line 72) | async def on_event(self, event: Event) -> None: method _handle_constellation_event (line 89) | async def _handle_constellation_event(self, event: ConstellationEvent)... method _handle_task_event (line 110) | async def _handle_task_event(self, event: TaskEvent) -> None: method _extract_constellation_from_event (line 129) | def _extract_constellation_from_event( method set_visualization_enabled (line 148) | def set_visualization_enabled(self, enabled: bool) -> None: method get_constellation (line 158) | def get_constellation(self, constellation_id: str) -> Optional[TaskCon... method register_constellation (line 167) | def register_constellation( method clear_constellations (line 178) | def clear_constellations(self) -> None: FILE: galaxy/session/observers/task_visualization_handler.py class TaskVisualizationHandler (line 17) | class TaskVisualizationHandler: method __init__ (line 25) | def __init__( method handle_task_started (line 38) | async def handle_task_started( method handle_task_completed (line 70) | async def handle_task_completed( method handle_task_failed (line 108) | async def handle_task_failed( method handle_task_event (line 152) | async def handle_task_event( FILE: galaxy/trajectory/galaxy_parser.py class GalaxyTrajectory (line 30) | class GalaxyTrajectory: method __init__ (line 45) | def __init__(self, folder_path: str) -> None: method _load_response_data (line 63) | def _load_response_data(self) -> List[Dict[str, Any]]: method _load_evaluation_data (line 84) | def _load_evaluation_data(self) -> Dict[str, Any]: method step_log (line 101) | def step_log(self) -> List[Dict[str, Any]]: method evaluation_log (line 106) | def evaluation_log(self) -> Dict[str, Any]: method request (line 111) | def request(self) -> Optional[str]: method total_steps (line 118) | def total_steps(self) -> int: method total_cost (line 123) | def total_cost(self) -> float: method total_time (line 128) | def total_time(self) -> float: method _parse_constellation (line 132) | def _parse_constellation( method _format_task_table (line 215) | def _format_task_table(self, tasks: Dict[str, Any]) -> str: method _generate_topology_image (line 246) | def _generate_topology_image( method _format_dependency_graph (line 528) | def _format_dependency_graph( method _format_dependency_details (line 564) | def _format_dependency_details(self, dependencies: Dict[str, Any]) -> ... method _format_task_details (line 637) | def _format_task_details(self, tasks: Dict[str, Any]) -> str: method to_markdown (line 724) | def to_markdown( FILE: galaxy/trajectory/generate_report.py function main (line 20) | def main(): FILE: galaxy/visualization/change_detector.py class VisualizationChangeDetector (line 19) | class VisualizationChangeDetector: method calculate_constellation_changes (line 28) | def calculate_constellation_changes( method _determine_modification_type (line 125) | def _determine_modification_type(changes: Dict[str, Any]) -> str: method _task_properties_changed (line 152) | def _task_properties_changed(old_task, new_task) -> bool: method _dependency_properties_changed (line 187) | def _dependency_properties_changed( method format_change_summary (line 217) | def format_change_summary(changes: Dict[str, Any]) -> Dict[str, str]: FILE: galaxy/visualization/client_display.py class ClientDisplay (line 23) | class ClientDisplay: method __init__ (line 31) | def __init__(self, console: Optional[Console] = None): method show_galaxy_banner (line 39) | def show_galaxy_banner(self) -> None: method show_welcome_with_usage (line 51) | def show_welcome_with_usage(self) -> None: method show_interactive_banner (line 72) | def show_interactive_banner(self) -> None: method show_help (line 86) | def show_help(self) -> None: method show_status (line 115) | def show_status( method display_result (line 156) | def display_result(self, result: Dict[str, Any]) -> None: method show_initialization_progress (line 213) | def show_initialization_progress(self) -> Progress: method show_processing_request (line 227) | def show_processing_request(self, request_text: str) -> None: method show_execution_complete (line 240) | def show_execution_complete(self) -> None: method show_demo_banner (line 248) | def show_demo_banner(self) -> None: method show_demo_step (line 260) | def show_demo_step(self, step_number: int, request: str) -> None: method show_demo_complete (line 271) | def show_demo_complete(self) -> None: method show_processing_status (line 283) | def show_processing_status(self, message: str) -> None: method print_info (line 291) | def print_info(self, message: str) -> None: method print_success (line 299) | def print_success(self, message: str) -> None: method print_error (line 307) | def print_error(self, message: str) -> None: method print_warning (line 315) | def print_warning(self, message: str) -> None: method clear_screen (line 323) | def clear_screen(self) -> None: method get_user_input (line 327) | def get_user_input(self, prompt_text: str) -> str: FILE: galaxy/visualization/constellation_display.py class ConstellationDisplay (line 26) | class ConstellationDisplay: method __init__ (line 34) | def __init__(self, console: Optional[Console] = None): method display_constellation_started (line 42) | def display_constellation_started( method display_constellation_completed (line 66) | def display_constellation_completed( method display_constellation_failed (line 134) | def display_constellation_failed( method display_constellation_modified (line 165) | def display_constellation_modified( method _create_basic_info_panel (line 218) | def _create_basic_info_panel( method _create_basic_stats_panel (line 269) | def _create_basic_stats_panel(self, constellation: "TaskConstellation"... method _add_change_details_to_table (line 296) | def _add_change_details_to_table( method _add_constellation_stats_to_table (line 349) | def _add_constellation_stats_to_table( method _get_constellation_statistics (line 381) | def _get_constellation_statistics( method _get_ready_task_count (line 422) | def _get_ready_task_count(self, constellation: "TaskConstellation") ->... method _calculate_success_rate (line 434) | def _calculate_success_rate(self, status_counts: Dict[str, int]) -> Op... method _calculate_basic_statistics (line 447) | def _calculate_basic_statistics( method _get_state_text (line 470) | def _get_state_text(self, state: ConstellationState) -> str: FILE: galaxy/visualization/constellation_formatter.py class ConstellationFormatter (line 18) | class ConstellationFormatter: method __init__ (line 21) | def __init__(self): method format_duration (line 24) | def format_duration(self, seconds: float) -> str: method format_timestamp (line 38) | def format_timestamp(self, timestamp: str) -> str: method create_overview_table (line 46) | def create_overview_table(self, data: Dict[str, Any]) -> Table: method create_statistics_table (line 82) | def create_statistics_table(self, stats: Dict[str, Any]) -> Table: method create_critical_path_panel (line 131) | def create_critical_path_panel(self, stats: Dict[str, Any]) -> Optiona... method display_constellation_result (line 150) | def display_constellation_result(self, constellation_data: Dict[str, A... function format_constellation_result (line 203) | def format_constellation_result(result_data: Dict[str, Any]): FILE: galaxy/visualization/dag_visualizer.py class DAGVisualizer (line 31) | class DAGVisualizer: method __init__ (line 39) | def __init__(self, console: Optional[Console] = None): method display_constellation_overview (line 67) | def display_constellation_overview( method display_dag_topology (line 104) | def display_dag_topology(self, constellation: "TaskConstellation") -> ... method display_task_details (line 165) | def display_task_details(self, constellation: "TaskConstellation") -> ... method display_dependency_summary (line 229) | def display_dependency_summary(self, constellation: "TaskConstellation... method display_execution_flow (line 284) | def display_execution_flow(self, constellation: "TaskConstellation") -... method _format_task_for_tree (line 357) | def _format_task_for_tree(self, task: TaskStar, compact: bool = False)... method _build_topology_layers (line 377) | def _build_topology_layers( method _get_status_text (line 427) | def _get_status_text(self, status: TaskStatus) -> str: method _get_priority_color (line 438) | def _get_priority_color(self, priority) -> str: method _truncate_name (line 455) | def _truncate_name(self, name: str, max_length: int) -> str: function display_constellation_creation (line 468) | def display_constellation_creation( function display_constellation_update (line 483) | def display_constellation_update( function display_execution_progress (line 505) | def display_execution_progress( function visualize_dag (line 519) | def visualize_dag( FILE: galaxy/visualization/task_display.py class TaskDisplay (line 25) | class TaskDisplay: method __init__ (line 33) | def __init__(self, console: Optional[Console] = None): method display_task_started (line 41) | def display_task_started( method display_task_completed (line 70) | def display_task_completed( method display_task_failed (line 136) | def display_task_failed( method _format_task_details (line 198) | def _format_task_details( method get_task_status_icon (line 233) | def get_task_status_icon(self, status: TaskStatus) -> str: method format_task_summary (line 250) | def format_task_summary(self, task: TaskStar, include_id: bool = True)... FILE: galaxy/webui/dependencies.py class AppState (line 21) | class AppState: method __init__ (line 34) | def __init__(self) -> None: method websocket_observer (line 49) | def websocket_observer(self) -> Optional[WebSocketObserver]: method websocket_observer (line 58) | def websocket_observer(self, observer: WebSocketObserver) -> None: method galaxy_session (line 68) | def galaxy_session(self) -> Optional["GalaxySession"]: method galaxy_session (line 77) | def galaxy_session(self, session: "GalaxySession") -> None: method galaxy_client (line 87) | def galaxy_client(self) -> Optional["GalaxyClient"]: method galaxy_client (line 96) | def galaxy_client(self, client: "GalaxyClient") -> None: method request_counter (line 106) | def request_counter(self) -> int: method increment_request_counter (line 114) | def increment_request_counter(self) -> int: method reset_request_counter (line 123) | def reset_request_counter(self) -> None: function get_app_state (line 138) | def get_app_state() -> AppState: FILE: galaxy/webui/frontend/dist/assets/index-Bthiy-Xd.js function n (line 1) | function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i... function r (line 1) | function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)} function Wl (line 1) | function Wl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.c... function dS (line 9) | function dS(e){return e===null||typeof e!="object"?null:(e=zp&&e[zp]||e[... function cs (line 9) | function cs(e,t,n){this.props=e,this.context=t,this.refs=tx,this.updater... function nx (line 9) | function nx(){} function Mf (line 9) | function Mf(e,t,n){this.props=e,this.context=t,this.refs=tx,this.updater... function sx (line 9) | function sx(e,t,n){var r,i={},s=null,o=null;if(t!=null)for(r in t.ref!==... function fS (line 9) | function fS(e,t){return{$$typeof:zo,type:e.type,key:t,ref:e.ref,props:e.... function Lf (line 9) | function Lf(e){return typeof e=="object"&&e!==null&&e.$$typeof===zo} function hS (line 9) | function hS(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,fun... function Du (line 9) | function Du(e,t){return typeof e=="object"&&e!==null&&e.key!=null?hS(""+... function Da (line 9) | function Da(e,t,n,r,i){var s=typeof e;(s==="undefined"||s==="boolean")&&... function Jo (line 9) | function Jo(e,t,n){if(e==null)return e;var r=[],i=0;return Da(e,r,"","",... function pS (line 9) | function pS(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(... function ox (line 9) | function ox(){throw Error("act(...) is not supported in production build... function ax (line 17) | function ax(e,t,n){var r,i={},s=null,o=null;n!==void 0&&(s=""+n),t.key!=... function t (line 25) | function t(z,M){var k=z.length;z.push(M);e:for(;0>>1,H=z[... function n (line 25) | function n(z){return z.length===0?null:z[0]} function r (line 25) | function r(z){if(z.length===0)return null;var M=z[0],k=z.pop();if(k!==M)... function i (line 25) | function i(z,M){var k=z.sortIndex-M.sortIndex;return k!==0?k:z.id-M.id} function v (line 25) | function v(z){for(var M=n(u);M!==null;){if(M.callback===null)r(u);else i... function b (line 25) | function b(z){if(m=!1,v(z),!y)if(n(l)!==null)y=!0,I(N);else{var M=n(u);M... function N (line 25) | function N(z,M){y=!1,m&&(m=!1,g(P),P=-1),h=!0;var k=f;try{for(v(M),d=n(l... function L (line 25) | function L(){return!(e.unstable_now()-C"u"||ES(e,t,n,r))return!0;if(... function mt (line 33) | function mt(e,t,n,r,i,s,o){this.acceptsBooleans=t===2||t===3||t===4,this... function zf (line 33) | function zf(e){return e[1].toUpperCase()} function Ff (line 33) | function Ff(e,t,n,r){var i=Je.hasOwnProperty(t)?Je[t]:null;(i!==null?i.t... function ys (line 33) | function ys(e){return e===null||typeof e!="object"?null:(e=Bp&&e[Bp]||e[... function Is (line 33) | function Is(e){if(Iu===void 0)try{throw Error()}catch(n){var t=n.stack.t... function Ru (line 34) | function Ru(e,t){if(!e||Lu)return"";Lu=!0;var n=Error.prepareStackTrace;... function TS (line 37) | function TS(e){switch(e.tag){case 5:return Is(e.type);case 16:return Is(... function Zc (line 37) | function Zc(e){if(e==null)return null;if(typeof e=="function")return e.d... function AS (line 37) | function AS(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:r... function wr (line 37) | function wr(e){switch(typeof e){case"boolean":case"number":case"string":... function mx (line 37) | function mx(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="inp... function PS (line 37) | function PS(e){var t=mx(e)?"checked":"value",n=Object.getOwnPropertyDesc... function ta (line 37) | function ta(e){e._valueTracker||(e._valueTracker=PS(e))} function gx (line 37) | function gx(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n... function el (line 37) | function el(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u... function Jc (line 37) | function Jc(e,t){var n=t.checked;return Me({},t,{defaultChecked:void 0,d... function Hp (line 37) | function Hp(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checke... function yx (line 37) | function yx(e,t){t=t.checked,t!=null&&Ff(e,"checked",t,!1)} function ed (line 37) | function ed(e,t){yx(e,t);var n=wr(t.value),r=t.type;if(n!=null)r==="numb... function Up (line 37) | function Up(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defau... function td (line 37) | function td(e,t,n){(t!=="number"||el(e.ownerDocument)!==e)&&(n==null?e.d... function Li (line 37) | function Li(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i>>=0,e===0?32:31-(HS(e)/US|0)|0} function Rs (line 37) | function Rs(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:retur... function il (line 37) | function il(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.susp... function GS (line 37) | function GS(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case... function YS (line 37) | function YS(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirati... function cd (line 37) | function cd(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?... function Ix (line 37) | function Ix(){var e=ra;return ra<<=1,!(ra&4194240)&&(ra=64),e} function Fu (line 37) | function Fu(e){for(var t=[],n=0;31>n;n++)t.push(e);return t} function Fo (line 37) | function Fo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,... function qS (line 37) | function qS(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLan... function Uf (line 37) | function Uf(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var... function Lx (line 37) | function Lx(e){return e&=-e,1_i||(e.current=wd[_i],wd[_i]=null,_i--)} function be (line 38) | function be(e,t){_i++,wd[_i]=e.current,e.current=t} function Ki (line 38) | function Ki(e,t){var n=e.type.contextTypes;if(!n)return br;var r=e.state... function St (line 38) | function St(e){return e=e.childContextTypes,e!=null} function ul (line 38) | function ul(){_e(kt),_e(ot)} function gm (line 38) | function gm(e,t,n){if(ot.current!==br)throw Error(U(168));be(ot,t),be(kt... function s1 (line 38) | function s1(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.g... function cl (line 38) | function cl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMerged... function ym (line 38) | function ym(e,t,n){var r=e.stateNode;if(!r)throw Error(U(169));n?(e=s1(e... function o1 (line 38) | function o1(e){Nn===null?Nn=[e]:Nn.push(e)} function G_ (line 38) | function G_(e){Zl=!0,o1(e)} function Er (line 38) | function Er(){if(!Xu&&Nn!==null){Xu=!0;var e=0,t=ge;try{var n=Nn;for(ge=... function Ir (line 38) | function Ir(e,t){Ci[Ei++]=fl,Ci[Ei++]=dl,dl=e,fl=t} function a1 (line 38) | function a1(e,t,n){Ht[Ut++]=Tn,Ht[Ut++]=An,Ht[Ut++]=Zr,Zr=e;var r=Tn;e=A... function Zf (line 38) | function Zf(e){e.return!==null&&(Ir(e,1),a1(e,1,0))} function Jf (line 38) | function Jf(e){for(;e===dl;)dl=Ci[--Ei],Ci[Ei]=null,fl=Ci[--Ei],Ci[Ei]=n... function l1 (line 38) | function l1(e,t){var n=Gt(5,null,null,0);n.elementType="DELETED",n.state... function xm (line 38) | function xm(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!=... function bd (line 38) | function bd(e){return(e.mode&1)!==0&&(e.flags&128)===0} function kd (line 38) | function kd(e){if(Ne){var t=Dt;if(t){var n=t;if(!xm(e,t)){if(bd(e))throw... function vm (line 38) | function vm(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13... function ca (line 38) | function ca(e){if(e!==It)return!1;if(!Ne)return vm(e),Ne=!0,!1;var t;if(... function u1 (line 38) | function u1(){for(var e=Dt;e;)e=dr(e.nextSibling)} function Xi (line 38) | function Xi(){Dt=It=null,Ne=!1} function eh (line 38) | function eh(e){tn===null?tn=[e]:tn.push(e)} function ks (line 38) | function ks(e,t,n){if(e=n.ref,e!==null&&typeof e!="function"&&typeof e!=... function da (line 38) | function da(e,t){throw e=Object.prototype.toString.call(t),Error(U(31,e=... function wm (line 38) | function wm(e){var t=e._init;return t(e._payload)} function c1 (line 38) | function c1(e){function t(g,x){if(e){var v=g.deletions;v===null?(g.delet... function nh (line 38) | function nh(){th=Ni=pl=null} function rh (line 38) | function rh(e){var t=hl.current;_e(hl),e._currentValue=t} function Sd (line 38) | function Sd(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)... function Oi (line 38) | function Oi(e,t){pl=e,th=Ni=null,e=e.dependencies,e!==null&&e.firstConte... function Kt (line 38) | function Kt(e){var t=e._currentValue;if(th!==e)if(e={context:e,memoizedV... function ih (line 38) | function ih(e){Br===null?Br=[e]:Br.push(e)} function f1 (line 38) | function f1(e,t,n,r){var i=t.interleaved;return i===null?(n.next=n,ih(t)... function Fn (line 38) | function Fn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t)... function sh (line 38) | function sh(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:... function h1 (line 38) | function h1(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={base... function Dn (line 38) | function Dn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:n... function fr (line 38) | function fr(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.sh... function Fa (line 38) | function Fa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!... function bm (line 38) | function bm(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.upd... function ml (line 38) | function ml(e,t,n,r){var i=e.updateQueue;Jn=!1;var s=i.firstBaseUpdate,o... function km (line 38) | function km(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Zu.transition;Zu... function P1 (line 38) | function P1(){return Xt().memoizedState} function X_ (line 38) | function X_(e,t,n){var r=pr(e);if(n={lane:r,action:n,hasEagerState:!1,ea... function Q_ (line 38) | function Q_(e,t,n){var r=pr(e),i={lane:r,action:n,hasEagerState:!1,eager... function j1 (line 38) | function j1(e){var t=e.alternate;return e===je||t!==null&&t===je} function M1 (line 38) | function M1(e,t){Ys=yl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.ne... function D1 (line 38) | function D1(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.... function Jt (line 38) | function Jt(e,t){if(e&&e.defaultProps){t=Me({},t),e=e.defaultProps;for(v... function _d (line 38) | function _d(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:Me({},t,n),e... function Cm (line 38) | function Cm(e,t,n,r,i,s,o){return e=e.stateNode,typeof e.shouldComponent... function I1 (line 38) | function I1(e,t,n){var r=!1,i=br,s=t.contextType;return typeof s=="objec... function Em (line 38) | function Em(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps=="func... function Cd (line 38) | function Cd(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState... function Ji (line 38) | function Ji(e,t){try{var n="",r=t;do n+=TS(r),r=r.return;while(r);var i=... function tc (line 40) | function tc(e,t,n){return{value:e,source:null,stack:n??null,digest:t??nu... function Ed (line 40) | function Ed(e,t){try{console.error(t.value)}catch(n){setTimeout(function... function L1 (line 40) | function L1(e,t,n){n=Dn(-1,n),n.tag=3,n.payload={element:null};var r=t.v... function R1 (line 40) | function R1(e,t,n){n=Dn(-1,n),n.tag=3;var r=e.type.getDerivedStateFromEr... function Nm (line 40) | function Nm(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new tC;v... function Tm (line 40) | function Tm(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null... function Am (line 40) | function Am(e,t,n,r,i){return e.mode&1?(e.flags|=65536,e.lanes=i,e):(e==... function dt (line 40) | function dt(e,t,n,r){t.child=e===null?d1(t,null,n,r):Qi(t,e.child,n,r)} function Pm (line 40) | function Pm(e,t,n,r,i){n=n.render;var s=t.ref;return Oi(t,i),r=ch(e,t,n,... function jm (line 40) | function jm(e,t,n,r,i){if(e===null){var s=n.type;return typeof s=="funct... function z1 (line 40) | function z1(e,t,n,r,i){if(e!==null){var s=e.memoizedProps;if(po(s,r)&&e.... function F1 (line 40) | function F1(e,t,n){var r=t.pendingProps,i=r.children,s=e!==null?e.memoiz... function O1 (line 40) | function O1(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&... function Nd (line 40) | function Nd(e,t,n,r,i){var s=St(n)?Qr:ot.current;return s=Ki(t,s),Oi(t,i... function Mm (line 40) | function Mm(e,t,n,r,i){if(St(n)){var s=!0;cl(t)}else s=!1;if(Oi(t,i),t.s... function Td (line 40) | function Td(e,t,n,r,i,s){O1(e,t);var o=(t.flags&128)!==0;if(!r&&!o)retur... function V1 (line 40) | function V1(e){var t=e.stateNode;t.pendingContext?gm(e,t.pendingContext,... function Dm (line 40) | function Dm(e,t,n,r,i){return Xi(),eh(i),t.flags|=256,dt(e,t,n,r),t.child} function Pd (line 40) | function Pd(e){return{baseLanes:e,cachePool:null,transitions:null}} function $1 (line 40) | function $1(e,t,n){var r=t.pendingProps,i=Ae.current,s=!1,o=(t.flags&128... function ph (line 40) | function ph(e,t){return t=ru({mode:"visible",children:t},e.mode,0,null),... function fa (line 40) | function fa(e,t,n,r){return r!==null&&eh(r),Qi(t,e.child,null,n),e=ph(t,... function rC (line 40) | function rC(e,t,n,r,i,s,o){if(n)return t.flags&256?(t.flags&=-257,r=tc(E... function Im (line 40) | function Im(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),S... function nc (line 40) | function nc(e,t,n,r,i){var s=e.memoizedState;s===null?e.memoizedState={i... function B1 (line 40) | function B1(e,t,n){var r=t.pendingProps,i=r.revealOrder,s=r.tail;if(dt(e... function $a (line 40) | function $a(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=nu... function On (line 40) | function On(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),ei|=t.la... function iC (line 40) | function iC(e,t,n){switch(t.tag){case 3:V1(t),Xi();break;case 5:p1(t);br... function Ss (line 40) | function Ss(e,t){if(!Ne)switch(e.tailMode){case"hidden":t=e.tail;for(var... function nt (line 40) | function nt(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0... function sC (line 40) | function sC(e,t,n){var r=t.pendingProps;switch(Jf(t),t.tag){case 2:case ... function oC (line 40) | function oC(e,t){switch(Jf(t),t.tag){case 1:return St(t.type)&&ul(),e=t.... function Ti (line 40) | function Ti(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(n... function Md (line 40) | function Md(e,t,n){try{n()}catch(r){Le(e,t,r)}} function lC (line 40) | function lC(e,t){if(md=sl,e=Xx(),Qf(e)){if("selectionStart"in e)var n={s... function qs (line 40) | function qs(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r... function tu (line 40) | function tu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==nul... function Dd (line 40) | function Dd(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){... function G1 (line 40) | function G1(e){var t=e.alternate;t!==null&&(e.alternate=null,G1(t)),e.ch... function Y1 (line 40) | function Y1(e){return e.tag===5||e.tag===3||e.tag===4} function Rm (line 40) | function Rm(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Y1(... function Id (line 40) | function Id(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeTyp... function Ld (line 40) | function Ld(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertB... function qn (line 40) | function qn(e,t,n){for(n=n.child;n!==null;)q1(e,t,n),n=n.sibling} function q1 (line 40) | function q1(e,t,n){if(xn&&typeof xn.onCommitFiberUnmount=="function")try... function zm (line 40) | function zm(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n... function Zt (line 40) | function Zt(e,t){var n=t.deletions;if(n!==null)for(var r=0;r"u"||typeof __R... function Oe (line 40) | function Oe(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===n... function mv (line 265) | function mv(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+... function de (line 265) | function de(){for(var e,t,n=0,r="",i=arguments.length;n{try{this.notifyStatus("connecting... method attemptReconnect (line 281) | attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempt... method disconnect (line 281) | disconnect(){this.isIntentionalClose=!0,this.ws&&(this.ws.close(),this... method send (line 281) | send(t){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON... method sendRequest (line 281) | sendRequest(t){this.send({type:"request",text:t,timestamp:Date.now()})} method sendReset (line 281) | sendReset(){this.send({type:"reset",timestamp:Date.now()})} method sendPing (line 281) | sendPing(){this.send({type:"ping",timestamp:Date.now()})} method onEvent (line 281) | onEvent(t){return this.eventCallbacks.add(t),()=>{this.eventCallbacks.... method onStatusChange (line 281) | onStatusChange(t){return this.statusCallbacks.add(t),()=>{this.statusC... method notifyCallbacks (line 281) | notifyCallbacks(t){console.log("🎯 notifyCallbacks called with event:",... method notifyStatus (line 281) | notifyStatus(t){this.statusCallbacks.forEach(n=>{try{n(t)}catch(r){con... method isConnected (line 281) | get isConnected(){return this.ws!==null&&this.ws.readyState===WebSocke... function Pn (line 281) | function Pn(){return ac||(ac=new _5),ac} function A5 (line 281) | function A5(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join(... function eg (line 281) | function eg(e,t){return(M5.jsx?j5:P5).test(e)} function I5 (line 281) | function I5(e){return typeof e=="object"?e.type==="text"?tg(e.value):!1:... function tg (line 281) | function tg(e){return e.replace(D5,"")===""} class Ho (line 281) | class Ho{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space... method constructor (line 281) | constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)} function Sv (line 281) | function Sv(e,t){const n={},r={};for(const i of e)Object.assign(n,i.prop... function Hd (line 281) | function Hd(e){return e.toLowerCase()} class Et (line 281) | class Et{constructor(t,n){this.attribute=n,this.property=t}} method constructor (line 281) | constructor(t,n){this.attribute=n,this.property=t} function li (line 281) | function li(){return 2**++L5} class Eh (line 281) | class Eh extends Et{constructor(t,n,r,i){let s=-1;if(super(t,n),ng(this,... method constructor (line 281) | constructor(t,n,r,i){let s=-1;if(super(t,n),ng(this,"space",i),typeof ... function ng (line 281) | function ng(e,t,n){n&&(e[t]=n)} function ps (line 281) | function ps(e){const t={},n={};for(const[r,i]of Object.entries(e.propert... method transform (line 281) | transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()} function Cv (line 281) | function Cv(e,t){return t in e?e[t]:t} function Ev (line 281) | function Ev(e,t){return Cv(e,t.toLowerCase())} method transform (line 281) | transform(e,t){return"xlink:"+t.slice(5).toLowerCase()} method transform (line 281) | transform(e,t){return"xml:"+t.slice(3).toLowerCase()} function $5 (line 281) | function $5(e,t){const n=Hd(t);let r=t,i=Et;if(n in e.normal)return e.pr... function B5 (line 281) | function B5(e){return"-"+e.toLowerCase()} function H5 (line 281) | function H5(e){return e.charAt(1).toUpperCase()} function W5 (line 281) | function W5(e){return e.join(" ").trim()} function nE (line 282) | function nE(e,t){if(typeof e!="string")throw new TypeError("First argume... function ag (line 282) | function ag(e){return e?e.replace(Z5,Vr):Vr} function oE (line 282) | function oE(e,t){let n=null;if(!e||typeof e!="string")return n;const r=(... function Gd (line 282) | function Gd(e,t){var n={};return!e||typeof e!="string"||(0,gE.default)(e... function jv (line 282) | function jv(e){return t;function t(n){const r=n&&n.position&&n.position[... function wE (line 282) | function wE(e){const t=Ah(e),n=Pv(e);if(t&&n)return{start:t,end:n}} function Zs (line 282) | function Zs(e){return!e||typeof e!="object"?"":"position"in e||"type"in ... function Yd (line 282) | function Yd(e){return cg(e&&e.line)+":"+cg(e&&e.column)} function ug (line 282) | function ug(e){return Yd(e&&e.start)+"-"+Yd(e&&e.end)} function cg (line 282) | function cg(e){return e&&typeof e=="number"?e:1} class at (line 282) | class at extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r... method constructor (line 282) | constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let i=""... function CE (line 282) | function CE(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expecte... function Dv (line 282) | function Dv(e,t,n){if(t.type==="element")return EE(e,t,n);if(t.type==="m... function EE (line 282) | function EE(e,t,n){const r=e.schema;let i=r;t.tagName.toLowerCase()==="s... function NE (line 282) | function NE(e,t){if(t.data&&t.data.estree&&e.evaluater){const r=t.data.e... function TE (line 282) | function TE(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluate... function AE (line 282) | function AE(e,t,n){const r=e.schema;let i=r;t.name==="svg"&&r.space==="h... function PE (line 282) | function PE(e,t,n){const r={};return jh(r,Mh(e,t)),e.create(t,e.Fragment... function jE (line 282) | function jE(e,t){return t.value} function Iv (line 282) | function Iv(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.... function jh (line 282) | function jh(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children... function ME (line 282) | function ME(e,t,n){return r;function r(i,s,o,a){const u=Array.isArray(o.... function DE (line 282) | function DE(e,t){return n;function n(r,i,s,o){const a=Array.isArray(s.ch... function IE (line 282) | function IE(e,t){const n={};let r,i;for(i in t.properties)if(i!=="childr... function LE (line 282) | function LE(e,t){const n={};for(const r of t.attributes)if(r.type==="mdx... function Mh (line 282) | function Mh(e,t){const n=[];let r=-1;const i=e.passKeys?new Map:bE;for(;... function RE (line 282) | function RE(e,t,n){const r=$5(e.schema,t);if(!(n==null||typeof n=="numbe... function zE (line 282) | function zE(e,t){try{return vE(t,{reactCompat:!0})}catch(n){if(e.ignoreI... function Lv (line 282) | function Lv(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.incl... function _o (line 282) | function _o(e,t){const n=new at("Cannot handle MDX estrees without `crea... function FE (line 282) | function FE(e){const t={};let n;for(n in e)Ph.call(e,n)&&(t[OE(n)]=e[n])... function OE (line 282) | function OE(e){let t=e.replace(kE,VE);return t.slice(0,3)==="ms-"&&(t="-... function VE (line 282) | function VE(e){return"-"+e.toLowerCase()} function Dh (line 282) | function Dh(e,t){const n=$E,r=typeof n.includeImageAlt=="boolean"?n.incl... function Rv (line 282) | function Rv(e,t,n){if(BE(e)){if("value"in e)return e.type==="html"&&!n?"... function dg (line 282) | function dg(e,t,n){const r=[];let i=-1;for(;++ii?0:i+t:t=t>... function Wt (line 282) | function Wt(e,t){return e.length>0?(Lt(e,e.length,0,t),e):t} function zv (line 282) | function zv(e){const t={};let n=-1;for(;++n13&&... function an (line 282) | function an(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").... function Cl (line 282) | function Cl(e){return e!==null&&(e<32||e===127)} function J (line 282) | function J(e){return e!==null&&e<-2} function ve (line 282) | function ve(e){return e!==null&&(e<0||e===32)} function ue (line 282) | function ue(e){return e===-2||e===-1||e===32} function Nr (line 282) | function Nr(e){return t;function t(n){return n!==null&&n>-1&&e.test(Stri... function ms (line 282) | function ms(e){const t=[];let n=-1,r=0,i=0;for(;++n=this.left.length+this.right.length)throw new RangeEr... method length (line 282) | get length(){return this.left.length+this.right.length} method shift (line 282) | shift(){return this.setCursor(0),this.right.pop()} method slice (line 282) | slice(t,n){const r=n??Number.POSITIVE_INFINITY;return rthis.left.length&&this.right... function Cs (line 282) | function Cs(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n1} function i4 (line 288) | function i4(e,t){const n={},r=e.all(t);let i=-1;for(typeof t.start=="num... function s4 (line 288) | function s4(e,t){const n={type:"element",tagName:"p",properties:{},child... function o4 (line 288) | function o4(e,t){const n={type:"root",children:e.wrap(e.all(t))};return ... function a4 (line 288) | function a4(e,t){const n={type:"element",tagName:"strong",properties:{},... function l4 (line 288) | function l4(e,t){const n=e.all(t),r=n.shift(),i=[];if(r){const o={type:"... function u4 (line 288) | function u4(e,t,n){const r=n?n.children:void 0,s=(r?r.indexOf(t):1)===0?... function c4 (line 288) | function c4(e,t){const n={type:"element",tagName:"td",properties:{},chil... function d4 (line 288) | function d4(e){const t=String(e),n=/\r?\n|\r/g;let r=n.exec(t),i=0;const... function _g (line 288) | function _g(e,t,n){let r=0,i=e.length;if(t){let s=e.codePointAt(r);for(;... function f4 (line 288) | function f4(e,t){const n={type:"text",value:d4(String(t.value))};return ... function h4 (line 288) | function h4(e,t){const n={type:"element",tagName:"hr",properties:{},chil... function ga (line 288) | function ga(){} function v4 (line 288) | function v4(e,t){const n=[{type:"text",value:"↩"}];return t>1&&n.push({t... function w4 (line 288) | function w4(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")} function b4 (line 288) | function b4(e){const t=typeof e.options.clobberPrefix=="string"?e.option... function k4 (line 290) | function k4(e){const t=[];let n=-1;for(;++no.leng... function V4 (line 294) | function V4(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('... function $4 (line 294) | function $4(e){if(Wo(e),e.length===0)return".";let t=-1,n=e.length,r;for... function B4 (line 294) | function B4(e){Wo(e);let t=e.length,n=-1,r=0,i=-1,s=0,o;for(;t--;){const... function H4 (line 294) | function H4(...e){let t=-1,n;for(;++t?\]}]+$/.exec(e);if(!t)return[e,void... function sw (line 294) | function sw(e,t){const n=e.input.charCodeAt(e.index-1);return(e.index===... function NT (line 294) | function NT(){this.buffer()} function TT (line 294) | function TT(e){this.enter({type:"footnoteReference",identifier:"",label:... function AT (line 294) | function AT(){this.buffer()} function PT (line 294) | function PT(e){this.enter({type:"footnoteDefinition",identifier:"",label... function jT (line 294) | function jT(e){const t=this.resume(),n=this.stack[this.stack.length-1];n... function MT (line 294) | function MT(e){this.exit(e)} function DT (line 294) | function DT(e){const t=this.resume(),n=this.stack[this.stack.length-1];n... function IT (line 294) | function IT(e){this.exit(e)} function LT (line 294) | function LT(){return"["} function ow (line 294) | function ow(e,t,n,r){const i=n.createTracker(r);let s=i.move("[^");const... function RT (line 294) | function RT(){return{enter:{gfmFootnoteCallString:NT,gfmFootnoteCall:TT,... function zT (line 294) | function zT(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{fo... function FT (line 295) | function FT(e,t,n){return t===0?e:aw(e,t,n)} function aw (line 295) | function aw(e,t,n){return(n?"":" ")+e} function VT (line 295) | function VT(){return{canContainEols:["delete"],enter:{strikethrough:BT},... function $T (line 295) | function $T(){return{unsafe:[{character:"~",inConstruct:"phrasing",notIn... function BT (line 295) | function BT(e){this.enter({type:"delete",children:[]},e)} function HT (line 295) | function HT(e){this.exit(e)} function lw (line 295) | function lw(e,t,n,r){const i=n.createTracker(r),s=n.enter("strikethrough... function UT (line 295) | function UT(){return"~"} function WT (line 295) | function WT(e){return e.length} function GT (line 295) | function GT(e,t){const n=t||{},r=(n.align||[]).concat(),i=n.stringLength... function YT (line 296) | function YT(e){return e==null?"":String(e)} function Ug (line 296) | function Ug(e){const t=typeof e=="string"?e.codePointAt(0):0;return t===... function qT (line 296) | function qT(e,t,n,r){const i=n.enter("blockquote"),s=n.createTracker(r);... function KT (line 296) | function KT(e,t,n){return">"+(n?"":" ")+e} function XT (line 296) | function XT(e,t){return Wg(e,t.inConstruct,!0)&&!Wg(e,t.notInConstruct,!1)} function Wg (line 296) | function Wg(e,t,n){if(typeof t=="string"&&(t=[t]),!t||t.length===0)retur... function Gg (line 296) | function Gg(e,t,n,r){let i=-1;for(;++i{r&&e.mount&&e.mount(r),t&&(r... function Eo (line 309) | function Eo(e){return typeof e=="string"||Array.isArray(e)} function xu (line 309) | function xu(e){return e!==null&&typeof e=="object"&&typeof e.start=="fun... function vu (line 309) | function vu(e){return xu(e.animate)||qh.some(t=>Eo(e[t]))} function jw (line 309) | function jw(e){return!!(vu(e)||e.variants)} function bP (line 309) | function bP(e,t){if(vu(e)){const{initial:n,animate:r}=e;return{initial:n... function kP (line 309) | function kP(e){const{initial:t,animate:n}=bP(e,T.useContext(mu));return ... function Qg (line 309) | function Qg(e){return Array.isArray(e)?e.join(" "):e} function SP (line 309) | function SP(e){for(const t in e)No[t]={...No[t],...e[t]}} function CP (line 309) | function CP({preloadedFeatures:e,createVisualElement:t,useRender:n,useVi... function EP (line 309) | function EP({layoutId:e}){const t=T.useContext(Kh).id;return t&&e!==void... function NP (line 309) | function NP(e){function t(r,i={}){return CP(e(r,i))}if(typeof Proxy>"u")... function Xh (line 309) | function Xh(e){return typeof e!="string"||e.includes("-")?!1:!!(TP.index... function AP (line 309) | function AP(e){Object.assign(Al,e)} function Dw (line 309) | function Dw(e,{layout:t,layoutId:n}){return ui.has(e)||e.startsWith("ori... function MP (line 309) | function MP(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},... function Yo (line 309) | function Yo(e){return typeof e=="string"} function Qh (line 309) | function Qh(e,t,n,r){const{style:i,vars:s,transform:o,transformOrigin:a}... function Fw (line 309) | function Fw(e,t,n){for(const r in t)!Ct(t[r])&&!Dw(r,n)&&(e[r]=t[r])} function FP (line 309) | function FP({transformTemplate:e},t,n){return T.useMemo(()=>{const r=Zh(... function OP (line 309) | function OP(e,t,n){const r=e.style||{},i={};return Fw(i,r,e),Object.assi... function VP (line 309) | function VP(e,t,n){const r={},i=OP(e,t,n);return e.drag&&e.dragListener!... function Pl (line 309) | function Pl(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="... function BP (line 309) | function BP(e){e&&(Ow=t=>t.startsWith("on")?!Pl(t):e(t))} function HP (line 309) | function HP(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.va... function t0 (line 309) | function t0(e,t,n){return typeof e=="string"?e:te.transform(t+n*e)} function UP (line 309) | function UP(e,t,n){const r=t0(t,e.x,e.width),i=t0(n,e.y,e.height);return... function YP (line 309) | function YP(e,t,n=1,r=0,i=!0){e.pathLength=1;const s=i?WP:GP;e[s.offset]... function Jh (line 309) | function Jh(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:s,pathLengt... function qP (line 309) | function qP(e,t,n,r){const i=T.useMemo(()=>{const s=Vw();return Jh(s,t,{... function KP (line 309) | function KP(e=!1){return(n,r,i,{latestValues:s},o)=>{const l=(Xh(n)?qP:V... function $w (line 309) | function $w(e,{style:t,vars:n},r,i){Object.assign(e.style,t,i&&i.getProj... function Hw (line 309) | function Hw(e,t,n,r){$w(e,t,void 0,r);for(const i in t.attrs)e.setAttrib... function tp (line 309) | function tp(e,t){const{style:n}=e,r={};for(const i in n)(Ct(n[i])||t.sty... function Uw (line 309) | function Uw(e,t){const n=tp(e,t);for(const r in e)if(Ct(e[r])||Ct(t[r]))... function np (line 309) | function np(e,t,n,r={},i={}){return typeof t=="function"&&(t=t(n!==void ... function Ww (line 309) | function Ww(e){const t=T.useRef(null);return t.current===null&&(t.curren... function Ya (line 309) | function Ya(e){const t=Ct(e)?e.get():e;return XP(t)?t.toValue():t} function ZP (line 309) | function ZP({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n... function JP (line 309) | function JP(e,t,n,r){const i={},s=r(e,{});for(const f in s)i[f]=Ya(s[f])... class n0 (line 309) | class n0{constructor(){this.order=[],this.scheduled=new Set}add(t){if(!t... method constructor (line 309) | constructor(){this.order=[],this.scheduled=new Set} method add (line 309) | add(t){if(!this.scheduled.has(t))return this.scheduled.add(t),this.ord... method remove (line 309) | remove(t){const n=this.order.indexOf(t);n!==-1&&(this.order.splice(n,1... method clear (line 309) | clear(){this.order.length=0,this.scheduled.clear()} function ej (line 309) | function ej(e){let t=new n0,n=new n0,r=0,i=!1,s=!1;const o=new WeakSet,a... function nj (line 309) | function nj(e,t){let n=!1,r=!0;const i={delta:0,timestamp:0,isProcessing... function sj (line 309) | function sj(e,{forwardMotionProps:t=!1},n,r){return{...Xh(e)?rj:ij,prelo... function jn (line 309) | function jn(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e... function bu (line 309) | function bu(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}} function In (line 309) | function In(e,t,n,r){return jn(e,t,oj(n),r)} function qw (line 309) | function qw(e){let t=null;return()=>{const n=()=>{t=null};return t===nul... function Kw (line 309) | function Kw(e){let t=!1;if(e==="y")t=i0();else if(e==="x")t=r0();else{co... function Xw (line 309) | function Xw(){const e=Kw(!0);return e?(e(),!1):!0} class Tr (line 309) | class Tr{constructor(t){this.isMounted=!1,this.node=t}update(){}} method constructor (line 309) | constructor(t){this.isMounted=!1,this.node=t} method update (line 309) | update(){} function s0 (line 309) | function s0(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"S... class lj (line 309) | class lj extends Tr{mount(){this.unmount=yr(s0(this.node,!0),s0(this.nod... method mount (line 309) | mount(){this.unmount=yr(s0(this.node,!0),s0(this.node,!1))} method unmount (line 309) | unmount(){} class uj (line 309) | class uj extends Tr{constructor(){super(...arguments),this.isActive=!1}o... method constructor (line 309) | constructor(){super(...arguments),this.isActive=!1} method onFocus (line 309) | onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}c... method onBlur (line 309) | onBlur(){!this.isActive||!this.node.animationState||(this.node.animati... method mount (line 309) | mount(){this.unmount=yr(jn(this.node.current,"focus",()=>this.onFocus(... method unmount (line 309) | unmount(){} function Cc (line 309) | function Cc(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,... class cj (line 309) | class cj extends Tr{constructor(){super(...arguments),this.removeStartLi... method constructor (line 309) | constructor(){super(...arguments),this.removeStartListeners=Fe,this.re... method startPress (line 309) | startPress(t,n){this.isPressing=!0;const{onTapStart:r,whileTap:i}=this... method checkPressEnd (line 309) | checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,th... method cancelPress (line 309) | cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=... method mount (line 309) | mount(){const t=this.node.getProps(),n=In(t.globalTapTarget?window:thi... method unmount (line 309) | unmount(){this.removeStartListeners(),this.removeEndListeners(),this.r... function hj (line 309) | function hj({root:e,...t}){const n=e||document;Ec.has(n)||Ec.set(n,{});c... function pj (line 309) | function pj(e,t,n){const r=hj(t);return nf.set(e,n),r.observe(e),()=>{nf... class gj (line 309) | class gj extends Tr{constructor(){super(...arguments),this.hasEnteredVie... method constructor (line 309) | constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView... method startObserver (line 309) | startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps... method mount (line 309) | mount(){this.startObserver()} method update (line 309) | update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevP... method unmount (line 309) | unmount(){} function yj (line 309) | function yj({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]} function Zw (line 309) | function Zw(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e... function vj (line 309) | function vj(e){const t={};return e.values.forEach((n,r)=>t[r]=n.get()),t} function wj (line 309) | function wj(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVeloc... function ku (line 309) | function ku(e,t,n){const r=e.getProps();return np(r,t,n!==void 0?n:r.cus... function eb (line 309) | function eb(e){return!!(!e||typeof e=="string"&&tb[e]||Jw(e)||Array.isAr... function nb (line 309) | function nb(e){if(e)return Jw(e)?Fs(e):Array.isArray(e)?e.map(nb):tb[e]} function kj (line 309) | function kj(e,t,n,{delay:r=0,duration:i,repeat:s=0,repeatType:o="loop",e... function Sj (line 309) | function Sj(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2... function Ej (line 309) | function Ej(e,t,n,r,i){let s,o,a=0;do o=t+(n-t)/2,s=rb(o,r,i)-e,s>0?n=o:... function Ko (line 309) | function Ko(e,t,n,r){if(e===t&&n===r)return Fe;const i=s=>Ej(s,0,1,e,n);... function Lj (line 309) | function Lj(e){let t="",n="",r="",i="";return e.length>5?(t=e.substring(... function Tc (line 309) | function Tc(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/... function Rj (line 309) | function Rj({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=1... function a0 (line 309) | function a0(e){const t=Fj(e);let n=t.parse(e);return t===ji&&(n=Rj(n)),n} function Oj (line 309) | function Oj(e){var t,n;return isNaN(e)&&Yo(e)&&(((t=e.match(wu))===null|... function Pc (line 309) | function Pc(e,{regex:t,countKey:n,token:r,parse:i}){const s=e.tokenised.... function Ml (line 309) | function Ml(e){const t=e.toString(),n={value:t,tokenised:t,values:[],num... function pb (line 309) | function pb(e){return Ml(e).values} function mb (line 309) | function mb(e){const{values:t,numColors:n,numVars:r,tokenised:i}=Ml(e),s... function $j (line 309) | function $j(e){const t=pb(e);return mb(e)(t.map(Vj))} function yb (line 309) | function yb(e,t){return typeof e=="number"?n=>Pe(e,t,n):ct.test(e)?cb(e,... function Hj (line 309) | function Hj(e){return typeof e=="number"?l0:typeof e=="string"?ct.test(e... function Uj (line 309) | function Uj(e,t,n){const r=[],i=n||Hj(e[0]),s=e.length-1;for(let o=0;on*t)} function qj (line 309) | function qj(e,t){return e.map(()=>t||ib).splice(0,e.length-1)} function Dl (line 309) | function Dl({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){con... function bb (line 309) | function bb(e,t){return t?e*(1e3/t):0} function kb (line 309) | function kb(e,t,n){const r=Math.max(t-Kj,0);return bb(n-e(r),t-r)} function eM (line 309) | function eM({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,s... function nM (line 309) | function nM(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)} function sM (line 309) | function sM(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResol... function Sb (line 309) | function Sb({keyframes:e,restDelta:t,restSpeed:n,...r}){const i=e[0],s=e... function c0 (line 309) | function c0({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,boun... function f0 (line 309) | function f0(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t(t===void 0&&(t=e()),t)} function hM (line 309) | function hM(e,t,{onUpdate:n,onComplete:r,...i}){if(!(uM()&&cM.has(t)&&!i... function pM (line 309) | function pM({keyframes:e,delay:t,onUpdate:n,onComplete:r}){const i=()=>(... function bM (line 309) | function bM(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")... function _b (line 309) | function _b(e,t){let n=ap(e);return n!==af&&(n=Sr),n.getAnimatableNone?n... function _M (line 309) | function _M(e){if(typeof e=="number")return e===0;if(e!==null)return e==... function CM (line 309) | function CM(e,t,n,r){const i=of(t,n);let s;Array.isArray(n)?s=[...n]:s=[... function EM (line 309) | function EM({when:e,delay:t,delayChildren:n,staggerChildren:r,staggerDir... function lp (line 309) | function lp(e,t){return e[t]||e.default||e} function Ll (line 309) | function Ll(e){return!!(Ct(e)&&e.add)} function cp (line 309) | function cp(e,t){e.indexOf(t)===-1&&e.push(t)} function dp (line 309) | function dp(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)} class fp (line 309) | class fp{constructor(){this.subscriptions=[]}add(t){return cp(this.subsc... method constructor (line 309) | constructor(){this.subscriptions=[]} method add (line 309) | add(t){return cp(this.subscriptions,t),()=>dp(this.subscriptions,t)} method notify (line 309) | notify(t,n,r){const i=this.subscriptions.length;if(i)if(i===1)this.sub... method getSize (line 309) | getSize(){return this.subscriptions.length} method clear (line 309) | clear(){this.subscriptions.length=0} class AM (line 309) | class AM{constructor(t,n={}){this.version="10.18.0",this.timeDelta=0,thi... method constructor (line 309) | constructor(t,n={}){this.version="10.18.0",this.timeDelta=0,this.lastU... method onChange (line 309) | onChange(t){return this.on("change",t)} method on (line 309) | on(t,n){this.events[t]||(this.events[t]=new fp);const r=this.events[t]... method clearListeners (line 309) | clearListeners(){for(const t in this.events)this.events[t].clear()} method attach (line 309) | attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n} method set (line 309) | set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.pas... method setWithVelocity (line 309) | setWithVelocity(t,n,r){this.set(n),this.prev=t,this.timeDelta=r} method jump (line 309) | jump(t){this.updateAndNotify(t),this.prev=t,this.stop(),this.stopPassi... method get (line 309) | get(){return this.current} method getPrevious (line 309) | getPrevious(){return this.prev} method getVelocity (line 309) | getVelocity(){return this.canTrackVelocity?bb(parseFloat(this.current)... method start (line 309) | start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.a... method stop (line 309) | stop(){this.animation&&(this.animation.stop(),this.events.animationCan... method isAnimating (line 309) | isAnimating(){return!!this.animation} method clearAnimation (line 309) | clearAnimation(){delete this.animation} method destroy (line 309) | destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&th... function is (line 309) | function is(e,t){return new AM(e,t)} function DM (line 309) | function DM(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,is(n))} function IM (line 309) | function IM(e,t){const n=ku(e,t);let{transitionEnd:r={},transition:i={},... function LM (line 309) | function LM(e,t,n){var r,i;const s=Object.keys(t).filter(a=>!e.hasValue(... function RM (line 309) | function RM(e,t){return t?(t[e]||t.default||t).from:void 0} function zM (line 309) | function zM(e,t,n){const r={};for(const i in e){const s=RM(i,t);if(s!==v... function FM (line 309) | function FM({protectedKeys:e,needsAnimating:t},n){const r=e.hasOwnProper... function OM (line 309) | function OM(e,t){const n=e.get();if(Array.isArray(t)){for(let r=0;rPromise.all(t.map(({animation:n,options:r})=>BM... function GM (line 309) | function GM(e){let t=WM(e);const n=qM();let r=!0;const i=(l,u)=>{const c... function YM (line 309) | function YM(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!Zw(t,... function Mr (line 309) | function Mr(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},p... function qM (line 309) | function qM(){return{animate:Mr(!0),whileInView:Mr(),whileHover:Mr(),whi... class KM (line 309) | class KM extends Tr{constructor(t){super(t),t.animationState||(t.animati... method constructor (line 309) | constructor(t){super(t),t.animationState||(t.animationState=GM(t))} method updateAnimationControlsSubscription (line 309) | updateAnimationControlsSubscription(){const{animate:t}=this.node.getPr... method mount (line 309) | mount(){this.updateAnimationControlsSubscription()} method update (line 309) | update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.p... method unmount (line 309) | unmount(){} class QM (line 309) | class QM extends Tr{constructor(){super(...arguments),this.id=XM++}updat... method constructor (line 309) | constructor(){super(...arguments),this.id=XM++} method update (line 309) | update(){if(!this.node.presenceContext)return;const{isPresent:t,onExit... method mount (line 309) | mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmou... method unmount (line 309) | unmount(){} function JM (line 309) | function JM(e,t){const n=h0(e.x,t.x),r=h0(e.y,t.y);return Math.sqrt(n**2... class Pb (line 309) | class Pb{constructor(t,n,{transformPagePoint:r,contextWindow:i,dragSnapT... method constructor (line 309) | constructor(t,n,{transformPagePoint:r,contextWindow:i,dragSnapToOrigin... method updateHandlers (line 309) | updateHandlers(t){this.handlers=t} method end (line 309) | end(){this.removeListeners&&this.removeListeners(),Vn(this.updatePoint)} function Mc (line 309) | function Mc(e,t){return t?{point:t(e.point)}:e} function p0 (line 309) | function p0(e,t){return{x:e.x-t.x,y:e.y-t.y}} function Dc (line 309) | function Dc({point:e},t){return{point:e,delta:p0(e,jb(t)),offset:p0(e,eD... function eD (line 309) | function eD(e){return e[0]} function jb (line 309) | function jb(e){return e[e.length-1]} function tD (line 309) | function tD(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;c... function zt (line 309) | function zt(e){return e.max-e.min} function uf (line 309) | function uf(e,t=0,n=.01){return Math.abs(e-t)<=n} function m0 (line 309) | function m0(e,t,n,r=.5){e.origin=r,e.originPoint=Pe(t.min,t.max,e.origin... function ro (line 309) | function ro(e,t,n,r){m0(e.x,t.x,n.x,r?r.originX:void 0),m0(e.y,t.y,n.y,r... function g0 (line 309) | function g0(e,t,n){e.min=n.min+t.min,e.max=e.min+zt(t)} function nD (line 309) | function nD(e,t,n){g0(e.x,t.x,n.x),g0(e.y,t.y,n.y)} function y0 (line 309) | function y0(e,t,n){e.min=t.min-n.min,e.max=e.min+zt(t)} function io (line 309) | function io(e,t,n){y0(e.x,t.x,n.x),y0(e.y,t.y,n.y)} function rD (line 309) | function rD(e,{min:t,max:n},r){return t!==void 0&&er?n=To(t.min,t.... function aD (line 309) | function aD(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t... function lD (line 309) | function lD(e=cf){return e===!1?e=0:e===!0&&(e=cf),{x:w0(e,"left","right... function w0 (line 309) | function w0(e,t,n){return{min:b0(e,t),max:b0(e,n)}} function b0 (line 309) | function b0(e,t){return typeof e=="number"?e:e[t]||0} function Bt (line 309) | function Bt(e){return[e("x"),e("y")]} function Mb (line 309) | function Mb({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{m... function uD (line 309) | function uD({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.... function cD (line 309) | function cD(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.r... function Ic (line 309) | function Ic(e){return e===void 0||e===1} function df (line 309) | function df({scale:e,scaleX:t,scaleY:n}){return!Ic(e)||!Ic(t)||!Ic(n)} function Rr (line 309) | function Rr(e){return df(e)||Db(e)||e.z||e.rotate||e.rotateX||e.rotateY} function Db (line 309) | function Db(e){return _0(e.x)||_0(e.y)} function _0 (line 309) | function _0(e){return e&&e!=="0%"} function Rl (line 309) | function Rl(e,t,n){const r=e-n,i=t*r;return n+i} function C0 (line 309) | function C0(e,t,n,r,i){return i!==void 0&&(e=Rl(e,i,r)),Rl(e,n,r)+t} function ff (line 309) | function ff(e,t=0,n=1,r,i){e.min=C0(e.min,t,n,r,i),e.max=C0(e.max,t,n,r,i)} function Ib (line 309) | function Ib(e,{x:t,y:n}){ff(e.x,t.translate,t.scale,t.originPoint),ff(e.... function dD (line 309) | function dD(e,t,n,r=!1){const i=n.length;if(!i)return;t.x=t.y=1;let s,o;... function E0 (line 309) | function E0(e){return Number.isInteger(e)||e>1.0000000000001||e<.9999999... function er (line 309) | function er(e,t){e.min=e.min+t,e.max=e.max+t} function N0 (line 309) | function N0(e,t,[n,r,i]){const s=t[i]!==void 0?t[i]:.5,o=Pe(e.min,e.max,... function Di (line 309) | function Di(e,t){N0(e.x,t,fD),N0(e.y,t,hD)} function Lb (line 309) | function Lb(e,t){return Mb(cD(e.getBoundingClientRect(),t))} function pD (line 309) | function pD(e,t,n){const r=Lb(e,n),{scroll:i}=t;return i&&(er(r.x,i.offs... class gD (line 309) | class gD{constructor(t){this.openGlobalLock=null,this.isDragging=!1,this... method constructor (line 309) | constructor(t){this.openGlobalLock=null,this.isDragging=!1,this.curren... method start (line 309) | start(t,{snapToCursor:n=!1}={}){const{presenceContext:r}=this.visualEl... method stop (line 309) | stop(t,n){const r=this.isDragging;if(this.cancel(),!r)return;const{vel... method cancel (line 309) | cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.... method updateAxis (line 309) | updateAxis(t,n,r){const{drag:i}=this.getProps();if(!r||!Sa(t,i,this.cu... method resolveConstraints (line 309) | resolveConstraints(){var t;const{dragConstraints:n,dragElastic:r}=this... method resolveRefConstraints (line 309) | resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstrain... method startAnimation (line 309) | startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransi... method startAxisValueAnimation (line 309) | startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return... method stopAnimation (line 309) | stopAnimation(){Bt(t=>this.getAxisMotionValue(t).stop())} method pauseAnimation (line 309) | pauseAnimation(){Bt(t=>{var n;return(n=this.getAxisMotionValue(t).anim... method getAnimationState (line 309) | getAnimationState(t){var n;return(n=this.getAxisMotionValue(t).animati... method getAxisMotionValue (line 309) | getAxisMotionValue(t){const n="_drag"+t.toUpperCase(),r=this.visualEle... method snapToCursor (line 309) | snapToCursor(t){Bt(n=>{const{drag:r}=this.getProps();if(!Sa(n,r,this.c... method scalePositionWithinConstraints (line 309) | scalePositionWithinConstraints(){if(!this.visualElement.current)return... method addListeners (line 309) | addListeners(){if(!this.visualElement.current)return;mD.set(this.visua... method getProps (line 309) | getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirect... function Sa (line 309) | function Sa(e,t,n){return(t===!0||t===e)&&(n===null||n===e)} function yD (line 309) | function yD(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x... class xD (line 309) | class xD extends Tr{constructor(t){super(t),this.removeGroupControls=Fe,... method constructor (line 309) | constructor(t){super(t),this.removeGroupControls=Fe,this.removeListene... method mount (line 309) | mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGrou... method unmount (line 309) | unmount(){this.removeGroupControls(),this.removeListeners()} class vD (line 309) | class vD extends Tr{constructor(){super(...arguments),this.removePointer... method constructor (line 309) | constructor(){super(...arguments),this.removePointerDownListener=Fe} method onPointerDown (line 309) | onPointerDown(t){this.session=new Pb(t,this.createPanHandlers(),{trans... method createPanHandlers (line 309) | createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onP... method mount (line 309) | mount(){this.removePointerDownListener=In(this.node.current,"pointerdo... method update (line 309) | update(){this.session&&this.session.updateHandlers(this.createPanHandl... method unmount (line 309) | unmount(){this.removePointerDownListener(),this.session&&this.session.... function wD (line 309) | function wD(){const e=T.useContext(gu);if(e===null)return[!0,null];const... function A0 (line 309) | function A0(e,t){return t.max===t.min?0:e/(t.max-t.min)*100} class kD (line 309) | class kD extends B.Component{componentDidMount(){const{visualElement:t,l... method componentDidMount (line 309) | componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGr... method getSnapshotBeforeUpdate (line 309) | getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,dr... method componentDidUpdate (line 309) | componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(... method componentWillUnmount (line 309) | componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayou... method safeToRemove (line 309) | safeToRemove(){const{safeToRemove:t}=this.props;t&&t()} method render (line 309) | render(){return null} function zb (line 309) | function zb(e){const[t,n]=wD(),r=T.useContext(Kh);return B.createElement... function CD (line 309) | function CD(e,t,n,r,i,s){i?(e.opacity=Pe(0,n.opacity!==void 0?n.opacity:... function M0 (line 309) | function M0(e,t){return e[t]!==void 0?e[t]:e.borderRadius} function Ob (line 309) | function Ob(e,t,n){return r=>rt?1:n(To(e,t,r))} function D0 (line 309) | function D0(e,t){e.min=t.min,e.max=t.max} function $t (line 309) | function $t(e,t){D0(e.x,t.x),D0(e.y,t.y)} function I0 (line 309) | function I0(e,t,n,r,i){return e-=t,e=Rl(e,1/n,r),i!==void 0&&(e=Rl(e,1/i... function TD (line 309) | function TD(e,t=0,n=1,r=.5,i,s=e,o=e){if(wn.test(t)&&(t=parseFloat(t),t=... function L0 (line 309) | function L0(e,t,[n,r,i],s,o){TD(e,t[n],t[r],t[i],t.scale,s,o)} function R0 (line 309) | function R0(e,t,n,r){L0(e.x,t,AD,n?n.x:void 0,r?r.x:void 0),L0(e.y,t,PD,... function z0 (line 309) | function z0(e){return e.translate===0&&e.scale===1} function Vb (line 309) | function Vb(e){return z0(e.x)&&z0(e.y)} function jD (line 309) | function jD(e,t){return e.x.min===t.x.min&&e.x.max===t.x.max&&e.y.min===... function $b (line 309) | function $b(e,t){return Math.round(e.x.min)===Math.round(t.x.min)&&Math.... function F0 (line 309) | function F0(e){return zt(e.x)/zt(e.y)} class MD (line 309) | class MD{constructor(){this.members=[]}add(t){cp(this.members,t),t.sched... method constructor (line 309) | constructor(){this.members=[]} method add (line 309) | add(t){cp(this.members,t),t.scheduleRender()} method remove (line 309) | remove(t){if(dp(this.members,t),t===this.prevLead&&(this.prevLead=void... method relegate (line 309) | relegate(t){const n=this.members.findIndex(i=>t===i);if(n===0)return!1... method promote (line 309) | promote(t,n){const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,... method exitAnimationComplete (line 309) | exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resum... method scheduleRender (line 309) | scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender... method removeLeadSnapshot (line 309) | removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapsho... function O0 (line 309) | function O0(e,t,n){let r="";const i=e.x.translate/t.x,s=e.y.translate/t.... class ID (line 309) | class ID{constructor(){this.children=[],this.isDirty=!1}add(t){cp(this.c... method constructor (line 309) | constructor(){this.children=[],this.isDirty=!1} method add (line 309) | add(t){cp(this.children,t),this.isDirty=!0} method remove (line 309) | remove(t){dp(this.children,t),this.isDirty=!0} method forEach (line 309) | forEach(t){this.isDirty&&this.children.sort(DD),this.isDirty=!1,this.c... function LD (line 309) | function LD(e,t){const n=performance.now(),r=({timestamp:i})=>{const s=i... function RD (line 309) | function RD(e){window.MotionDebug&&window.MotionDebug.record(e)} function zD (line 309) | function zD(e){return e instanceof SVGElement&&e.tagName!=="svg"} function FD (line 309) | function FD(e,t,n){const r=Ct(e)?e:is(e);return r.start(up("",r,t,n)),r.... function Bb (line 309) | function Bb({attachResizeListener:e,defaultParent:t,measureScroll:n,chec... function $D (line 309) | function $D(e){e.updateLayout()} function BD (line 309) | function BD(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0... function HD (line 309) | function HD(e){zr.totalNodes++,e.parent&&(e.isProjecting()||(e.isProject... function UD (line 309) | function UD(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransfo... function WD (line 309) | function WD(e){e.clearSnapshot()} function B0 (line 309) | function B0(e){e.clearMeasurements()} function GD (line 309) | function GD(e){e.isLayoutDirty=!1} function YD (line 309) | function YD(e){const{visualElement:t}=e.options;t&&t.getProps().onBefore... function H0 (line 309) | function H0(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.targ... function qD (line 309) | function qD(e){e.resolveTargetDelta()} function KD (line 309) | function KD(e){e.calcProjection()} function XD (line 309) | function XD(e){e.resetRotation()} function QD (line 309) | function QD(e){e.removeLeadSnapshot()} function U0 (line 309) | function U0(e,t,n){e.translate=Pe(t.translate,0,n),e.scale=Pe(t.scale,1,... function W0 (line 309) | function W0(e,t,n,r){e.min=Pe(t.min,n.min,r),e.max=Pe(t.max,n.max,r)} function ZD (line 309) | function ZD(e,t,n,r){W0(e.x,t.x,n.x,r),W0(e.y,t.y,n.y,r)} function JD (line 309) | function JD(e){return e.animationValues&&e.animationValues.opacityExit!=... function q0 (line 309) | function q0(e){e.min=Y0(e.min),e.max=Y0(e.max)} function tI (line 309) | function tI(e){q0(e.x),q0(e.y)} function Hb (line 309) | function Hb(e,t,n){return e==="position"||e==="preserve-aspect"&&!uf(F0(... function sI (line 309) | function sI(e){const t=iI.exec(e);if(!t)return[,];const[,n,r]=t;return[n... function hf (line 309) | function hf(e,t,n=1){const[r,i]=sI(e);if(!r)return;const s=window.getCom... function oI (line 309) | function oI(e,{...t},n){const r=e.current;if(!(r instanceof Element))ret... function dI (line 309) | function dI(e){const t=[];return cI.forEach(n=>{const r=e.getValue(n);r!... function pI (line 309) | function pI(e,t,n,r){return lI(t)?hI(e,t,n,r):{target:t,transitionEnd:r}} function gI (line 309) | function gI(){if(Gb.current=!0,!!yu)if(window.matchMedia){const e=window... function yI (line 309) | function yI(e,t,n){const{willChange:r}=t;for(const i in t){const s=t[i],... class wI (line 309) | class wI{constructor({parent:t,props:n,presenceContext:r,reducedMotionCo... method constructor (line 309) | constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:i,... method scrapeMotionValuesFromProps (line 309) | scrapeMotionValuesFromProps(t,n){return{}} method mount (line 309) | mount(t){this.current=t,Z0.set(t,this),this.projection&&!this.projecti... method unmount (line 309) | unmount(){Z0.delete(this.current),this.projection&&this.projection.unm... method bindToMotionValue (line 309) | bindToMotionValue(t,n){const r=ui.has(t),i=n.on("change",o=>{this.late... method sortNodePosition (line 309) | sortNodePosition(t){return!this.current||!this.sortInstanceNodePositio... method loadFeatures (line 309) | loadFeatures({children:t,...n},r,i,s){let o,a;for(let l=0;l(e.current=!0,()=>{e.cu... function NI (line 309) | function NI(){const e=Xb(),[t,n]=T.useState(0),r=T.useCallback(()=>{e.cu... class TI (line 309) | class TI extends T.Component{getSnapshotBeforeUpdate(t){const n=this.pro... method getSnapshotBeforeUpdate (line 309) | getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t... method componentDidUpdate (line 309) | componentDidUpdate(){} method render (line 309) | render(){return this.props.children} function AI (line 309) | function AI({children:e,isPresent:t}){const n=T.useId(),r=T.useRef(null)... function PI (line 317) | function PI(){return new Map} function jI (line 317) | function jI(e){return T.useEffect(()=>()=>e(),[])} function MI (line 317) | function MI(e,t){e.forEach(n=>{const r=Fr(n);t.set(r,n)})} function DI (line 317) | function DI(e){const t=[];return T.Children.forEach(e,n=>{T.isValidEleme... function GI (line 320) | function GI(){return""} function qI (line 320) | function qI(e){const t=e.startsWith("/")?e.slice(1):e;return`${YI}/${t}`} function gt (line 320) | function gt(e){if(typeof e=="string"||typeof e=="number")return""+e;let ... function Zb (line 320) | function Zb(e,t=rL,n){const r=nL(e.subscribe,e.getState,e.getServerState... function Su (line 320) | function Su(){for(var e=0,t=arguments.length,n={},r;e=0&&(t=e.slice(0,n)... function lL (line 320) | function lL(e){return function(){var t=this.ownerDocument,n=this.namespa... function uL (line 320) | function uL(e){return function(){return this.ownerDocument.createElement... function Jb (line 320) | function Jb(e){var t=_u(e);return(t.local?uL:lL)(t)} function cL (line 320) | function cL(){} function hp (line 320) | function hp(e){return e==null?cL:function(){return this.querySelector(e)}} function dL (line 320) | function dL(e){typeof e!="function"&&(e=hp(e));for(var t=this._groups,n=... function fL (line 320) | function fL(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)} function hL (line 320) | function hL(){return[]} function ek (line 320) | function ek(e){return e==null?hL:function(){return this.querySelectorAll... function pL (line 320) | function pL(e){return function(){return fL(e.apply(this,arguments))}} function mL (line 320) | function mL(e){typeof e=="function"?e=pL(e):e=ek(e);for(var t=this._grou... function tk (line 320) | function tk(e){return function(){return this.matches(e)}} function nk (line 320) | function nk(e){return function(t){return t.matches(e)}} function yL (line 320) | function yL(e){return function(){return gL.call(this.children,e)}} function xL (line 320) | function xL(){return this.firstElementChild} function vL (line 320) | function vL(e){return this.select(e==null?xL:yL(typeof e=="function"?e:n... function bL (line 320) | function bL(){return Array.from(this.children)} function kL (line 320) | function kL(e){return function(){return wL.call(this.children,e)}} function SL (line 320) | function SL(e){return this.selectAll(e==null?bL:kL(typeof e=="function"?... function _L (line 320) | function _L(e){typeof e!="function"&&(e=tk(e));for(var t=this._groups,n=... function rk (line 320) | function rk(e){return new Array(e.length)} function CL (line 320) | function CL(){return new Ft(this._enter||this._groups.map(rk),this._pare... function zl (line 320) | function zl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.... function EL (line 320) | function EL(e){return function(){return e}} function NL (line 320) | function NL(e,t,n,r,i,s){for(var o=0,a,l=t.length,u=s.length;ot?1:e>=t?0:NaN} function FL (line 320) | function FL(){var e=arguments[0];return arguments[0]=this,e.apply(null,a... function OL (line 320) | function OL(){return Array.from(this)} function VL (line 320) | function VL(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?QL:typeo... function os (line 320) | function os(e,t){return e.style.getPropertyValue(t)||ik(e).getComputedSt... function tR (line 320) | function tR(e){return function(){delete this[e]}} function nR (line 320) | function nR(e,t){return function(){this[e]=t}} function rR (line 320) | function rR(e,t){return function(){var n=t.apply(this,arguments);n==null... function iR (line 320) | function iR(e,t){return arguments.length>1?this.each((t==null?tR:typeof ... function sk (line 320) | function sk(e){return e.trim().split(/^|\s+/)} function pp (line 320) | function pp(e){return e.classList||new ok(e)} function ok (line 320) | function ok(e){this._node=e,this._names=sk(e.getAttribute("class")||"")} function ak (line 320) | function ak(e,t){for(var n=pp(e),r=-1,i=t.length;++r>16&255,e>>8&255,e&255,1)} function Ca (line 320) | function Ca(e,t,n,r){return r<=0&&(e=t=n=NaN),new bt(e,t,n,r)} function n8 (line 320) | function n8(e){return e instanceof Qo||(e=Mo(e)),e?(e=e.rgb(),new bt(e.r... function yf (line 320) | function yf(e,t,n,r){return arguments.length===1?n8(e):new bt(e,t,n,r??1)} function bt (line 320) | function bt(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r} method brighter (line 320) | brighter(e){return e=e==null?Fl:Math.pow(Fl,e),new bt(this.r*e,this.g*e,... method darker (line 320) | darker(e){return e=e==null?Po:Math.pow(Po,e),new bt(this.r*e,this.g*e,th... method rgb (line 320) | rgb(){return this} method clamp (line 320) | clamp(){return new bt(Xr(this.r),Xr(this.g),Xr(this.b),Ol(this.opacity))} method displayable (line 320) | displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5... function uy (line 320) | function uy(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}`} function r8 (line 320) | function r8(){return`#${Wr(this.r)}${Wr(this.g)}${Wr(this.b)}${Wr((isNaN... function cy (line 320) | function cy(){const e=Ol(this.opacity);return`${e===1?"rgb(":"rgba("}${X... function Ol (line 320) | function Ol(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))} function Xr (line 320) | function Xr(e){return Math.max(0,Math.min(255,Math.round(e)||0))} function Wr (line 320) | function Wr(e){return e=Xr(e),(e<16?"0":"")+e.toString(16)} function dy (line 320) | function dy(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=N... function pk (line 320) | function pk(e){if(e instanceof rn)return new rn(e.h,e.s,e.l,e.opacity);i... function i8 (line 320) | function i8(e,t,n,r){return arguments.length===1?pk(e):new rn(e,t,n,r??1)} function rn (line 320) | function rn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r} method brighter (line 320) | brighter(e){return e=e==null?Fl:Math.pow(Fl,e),new rn(this.h,this.s,this... method darker (line 320) | darker(e){return e=e==null?Po:Math.pow(Po,e),new rn(this.h,this.s,this.l... method rgb (line 320) | rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s... method clamp (line 320) | clamp(){return new rn(fy(this.h),Ea(this.s),Ea(this.l),Ol(this.opacity))} method displayable (line 320) | displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&th... method formatHsl (line 320) | formatHsl(){const e=Ol(this.opacity);return`${e===1?"hsl(":"hsla("}${fy(... function fy (line 320) | function fy(e){return e=(e||0)%360,e<0?e+360:e} function Ea (line 320) | function Ea(e){return Math.max(0,Math.min(1,e||0))} function Fc (line 320) | function Fc(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e... function s8 (line 320) | function s8(e,t){return function(n){return e+n*t}} function o8 (line 320) | function o8(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,functi... function a8 (line 320) | function a8(e){return(e=+e)==1?gk:function(t,n){return n-t?o8(t,n,e):mk(... function gk (line 320) | function gk(e,t){var n=t-e;return n?s8(e,n):mk(isNaN(e)?t:e)} function r (line 320) | function r(i,s){var o=n((i=yf(i)).r,(s=yf(s)).r),a=n(i.g,s.g),l=n(i.b,s.... function tr (line 320) | function tr(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}} function l8 (line 320) | function l8(e){return function(){return e}} function u8 (line 320) | function u8(e){return function(t){return e(t)+""}} function c8 (line 320) | function c8(e,t){var n=xf.lastIndex=Oc.lastIndex=0,r,i,s,o=-1,a=[],l=[];... function yk (line 320) | function yk(e,t,n,r,i,s){var o,a,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t... function d8 (line 320) | function d8(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKit... function f8 (line 320) | function f8(e){return e==null||(Na||(Na=document.createElementNS("http:/... function xk (line 320) | function xk(e,t,n,r){function i(u){return u.length?u.pop()+" ":""}functi... function my (line 320) | function my(e){return((e=Math.exp(e))+1/e)/2} function g8 (line 320) | function g8(e){return((e=Math.exp(e))-1/e)/2} function y8 (line 320) | function y8(e){return((e=Math.exp(2*e))-1)/(e+1)} function i (line 320) | function i(s,o){var a=s[0],l=s[1],u=s[2],c=o[0],d=o[1],f=o[2],h=c-a,y=d-... function gp (line 320) | function gp(){return ri||(wk(v8),ri=Do.now()+Cu)} function v8 (line 320) | function v8(){ri=0} function Bl (line 320) | function Bl(){this._call=this._time=this._next=null} function bk (line 320) | function bk(e,t,n){var r=new Bl;return r.restart(e,t,n),r} function w8 (line 320) | function w8(){gp(),++as;for(var e=Vl,t;e;)(t=ri-e._time)>=0&&e._call.cal... function gy (line 320) | function gy(){ri=($l=Do.now())+Cu,as=Os=0;try{w8()}finally{as=0,k8(),ri=0}} function b8 (line 320) | function b8(){var e=Do.now(),t=e-$l;t>vk&&(Cu-=t,$l=e)} function k8 (line 320) | function k8(){for(var e,t=Vl,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),... function wf (line 320) | function wf(e){if(!as){Os&&(Os=clearTimeout(Os));var t=e-ri;t>24?(e<1/0&... function yy (line 320) | function yy(e,t,n){var r=new Bl;return t=t==null?0:+t,r.restart(i=>{r.st... function Eu (line 320) | function Eu(e,t,n,r,i,s){var o=e.__transition;if(!o)e.__transition={};el... function yp (line 320) | function yp(e,t){var n=cn(e,t);if(n.state>kk)throw new Error("too late; ... function Sn (line 320) | function Sn(e,t){var n=cn(e,t);if(n.state>Xa)throw new Error("too late; ... function cn (line 320) | function cn(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("... function C8 (line 320) | function C8(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=bk(s,0,n.time);... function Za (line 320) | function Za(e,t){var n=e.__transition,r,i,s=!0,o;if(n){t=t==null?null:t+... function E8 (line 320) | function E8(e){return this.each(function(){Za(this,e)})} function N8 (line 320) | function N8(e,t){var n,r;return function(){var i=Sn(this,e),s=i.tween;if... function T8 (line 320) | function T8(e,t,n){var r,i;if(typeof n!="function")throw new Error;retur... function A8 (line 320) | function A8(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r=c... function xp (line 320) | function xp(e,t,n){var r=e._id;return e.each(function(){var i=Sn(this,r)... function Sk (line 320) | function Sk(e,t){var n;return(typeof t=="number"?tr:t instanceof Mo?hy:(... function P8 (line 320) | function P8(e){return function(){this.removeAttribute(e)}} function j8 (line 320) | function j8(e){return function(){this.removeAttributeNS(e.space,e.local)}} function M8 (line 320) | function M8(e,t,n){var r,i=n+"",s;return function(){var o=this.getAttrib... function D8 (line 320) | function D8(e,t,n){var r,i=n+"",s;return function(){var o=this.getAttrib... function I8 (line 320) | function I8(e,t,n){var r,i,s;return function(){var o,a=n(this),l;return ... function L8 (line 320) | function L8(e,t,n){var r,i,s;return function(){var o,a=n(this),l;return ... function R8 (line 320) | function R8(e,t){var n=_u(e),r=n==="transform"?p8:Sk;return this.attrTwe... function z8 (line 320) | function z8(e,t){return function(n){this.setAttribute(e,t.call(this,n))}} function F8 (line 320) | function F8(e,t){return function(n){this.setAttributeNS(e.space,e.local,... function O8 (line 320) | function O8(e,t){var n,r;function i(){var s=t.apply(this,arguments);retu... function V8 (line 320) | function V8(e,t){var n,r;function i(){var s=t.apply(this,arguments);retu... function $8 (line 320) | function $8(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.twe... function B8 (line 320) | function B8(e,t){return function(){yp(this,e).delay=+t.apply(this,argume... function H8 (line 320) | function H8(e,t){return t=+t,function(){yp(this,e).delay=t}} function U8 (line 320) | function U8(e){var t=this._id;return arguments.length?this.each((typeof ... function W8 (line 320) | function W8(e,t){return function(){Sn(this,e).duration=+t.apply(this,arg... function G8 (line 320) | function G8(e,t){return t=+t,function(){Sn(this,e).duration=t}} function Y8 (line 320) | function Y8(e){var t=this._id;return arguments.length?this.each((typeof ... function q8 (line 320) | function q8(e,t){if(typeof t!="function")throw new Error;return function... function K8 (line 320) | function K8(e){var t=this._id;return arguments.length?this.each(q8(t,e))... function X8 (line 320) | function X8(e,t){return function(){var n=t.apply(this,arguments);if(type... function Q8 (line 320) | function Q8(e){if(typeof e!="function")throw new Error;return this.each(... function Z8 (line 320) | function Z8(e){typeof e!="function"&&(e=tk(e));for(var t=this._groups,n=... function J8 (line 320) | function J8(e){if(e._id!==this._id)throw new Error;for(var t=this._group... function e6 (line 320) | function e6(e){return(e+"").trim().split(/^|\s+/).every(function(t){var ... function t6 (line 320) | function t6(e,t,n){var r,i,s=e6(t)?yp:Sn;return function(){var o=s(this,... function n6 (line 320) | function n6(e,t){var n=this._id;return arguments.length<2?cn(this.node()... function r6 (line 320) | function r6(e){return function(){var t=this.parentNode;for(var n in this... function i6 (line 320) | function i6(){return this.on("end.remove",r6(this._id))} function s6 (line 320) | function s6(e){var t=this._name,n=this._id;typeof e!="function"&&(e=hp(e... function o6 (line 320) | function o6(e){var t=this._name,n=this._id;typeof e!="function"&&(e=ek(e... function l6 (line 320) | function l6(){return new a6(this._groups,this._parents)} function u6 (line 320) | function u6(e,t){var n,r,i;return function(){var s=os(this,e),o=(this.st... function _k (line 320) | function _k(e){return function(){this.style.removeProperty(e)}} function c6 (line 320) | function c6(e,t,n){var r,i=n+"",s;return function(){var o=os(this,e);ret... function d6 (line 320) | function d6(e,t,n){var r,i,s;return function(){var o=os(this,e),a=n(this... function f6 (line 320) | function f6(e,t){var n,r,i,s="style."+t,o="end."+s,a;return function(){v... function h6 (line 320) | function h6(e,t,n){var r=(e+="")=="transform"?h8:Sk;return t==null?this.... function p6 (line 320) | function p6(e,t,n){return function(r){this.style.setProperty(e,t.call(th... function m6 (line 320) | function m6(e,t,n){var r,i;function s(){var o=t.apply(this,arguments);re... function g6 (line 320) | function g6(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r... function y6 (line 320) | function y6(e){return function(){this.textContent=e}} function x6 (line 320) | function x6(e){return function(){var t=e(this);this.textContent=t??""}} function v6 (line 320) | function v6(e){return this.tween("text",typeof e=="function"?x6(xp(this,... function w6 (line 320) | function w6(e){return function(t){this.textContent=e.call(this,t)}} function b6 (line 320) | function b6(e){var t,n;function r(){var i=e.apply(this,arguments);return... function k6 (line 320) | function k6(e){var t="text";if(arguments.length<1)return(t=this.tween(t)... function S6 (line 320) | function S6(){for(var e=this._name,t=this._id,n=Ck(),r=this._groups,i=r.... function _6 (line 320) | function _6(){var e,t,n=this,r=n._id,i=n.size();return new Promise(funct... function $n (line 320) | function $n(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._i... function Ck (line 320) | function Ck(){return++C6} function E6 (line 320) | function E6(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2} function T6 (line 320) | function T6(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.pare... function A6 (line 320) | function A6(e){var t,n;e instanceof $n?(t=e._id,e=e._name):(t=Ck(),(n=N6... function P6 (line 320) | function P6(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.de... function Mn (line 320) | function Mn(e,t,n){this.k=e,this.x=t,this.y=n} function Vc (line 320) | function Vc(e){e.stopImmediatePropagation()} function Ps (line 320) | function Ps(e){e.preventDefault(),e.stopImmediatePropagation()} function j6 (line 320) | function j6(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button} function M6 (line 320) | function M6(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGEle... function wy (line 320) | function wy(){return this.__zoom||xr} function D6 (line 320) | function D6(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*... function I6 (line 320) | function I6(){return navigator.maxTouchPoints||"ontouchstart"in this} function L6 (line 320) | function L6(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])... function R6 (line 320) | function R6(){var e=j6,t=M6,n=L6,r=D6,i=I6,s=[0,1/0],o=[[-1/0,-1/0],[1/0... function De (line 320) | function De(e,t){const n=T.useContext(Nu);if(n===null)throw new Error(Ek... function Nk (line 320) | function Nk({position:e,children:t,className:n,style:r,...i}){const s=De... function O6 (line 320) | function O6({proOptions:e,position:t="bottom-right"}){return e!=null&&e.... function _f (line 320) | function _f(e){var i,s;const t=G6(e)?e.nativeEvent:e,n=((s=(i=t.composed... function js (line 320) | function js(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(s=>s.i... function Mk (line 320) | function Mk({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(... function Dk (line 320) | function Dk({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,so... function Sy (line 320) | function Sy({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===Q.Left||e===Q.Right?... function Ik (line 320) | function Ik({sourceX:e,sourceY:t,sourcePosition:n=Q.Bottom,targetX:r,tar... function q6 (line 320) | function q6({source:e,sourcePosition:t=Q.Bottom,target:n,targetPosition:... function K6 (line 320) | function K6(e,t,n,r){const i=Math.min(Cy(e,t)/2,Cy(t,n)/2,r),{x:s,y:o}=t... function Cf (line 320) | function Cf({sourceX:e,sourceY:t,sourcePosition:n=Q.Bottom,targetX:r,tar... function X6 (line 320) | function X6({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,s,o,a]=Mk... function Aa (line 320) | function Aa(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)} function Ey (line 320) | function Ey({pos:e,x1:t,y1:n,x2:r,y2:i,c:s}){switch(e){case Q.Left:retur... function Lk (line 320) | function Lk({sourceX:e,sourceY:t,sourcePosition:n=Q.Bottom,targetX:r,tar... function Ny (line 320) | function Ny(e,t,n,r){return(t[n]||[]).reduce((i,s)=>{var o,a;return`${e.... function rz (line 320) | function rz(e,t,n,r,i,s){const{x:o,y:a}=vr(e),u=t.elementsFromPoint(o,a)... function $k (line 320) | function $k(e,t,n,r,i,s,o){const a=i==="target",l=o.querySelector(`.reac... function sz (line 320) | function sz({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce(... function Np (line 320) | function Np(e,t){return e||(t!=null&&t.classList.contains("target")?"tar... function $c (line 320) | function $c(e){e==null||e.classList.remove("valid","connecting","react-f... function oz (line 320) | function oz(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n} function Bk (line 320) | function Bk({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState... function cz (line 320) | function cz(e,t){return Oe(e.selectedNodes.map(Pa),t.selectedNodes.map(P... function fz (line 320) | function fz({onSelectionChange:e}){const t=De(dz);return e||t?B.createEl... function hi (line 320) | function hi(e,t){T.useEffect(()=>{typeof e<"u"&&t(e)},[e])} function ae (line 320) | function ae(e,t,n){T.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])} function xz (line 320) | function xz({rfId:e}){const t=De(yz);return B.createElement("div",{id:`$... function vz (line 320) | function vz({rfId:e,disableKeyboardA11y:t}){return B.createElement(B.Fra... function Py (line 320) | function Py(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.ev... function jy (line 320) | function jy(e,t){return t.includes(e)?"code":"key"} function Zk (line 320) | function Zk(e,t,n,r){var a,l;const i=e.parentNode||e.parentId;if(!i)retu... function Jk (line 320) | function Jk(e,t,n){e.forEach(r=>{var s;const i=r.parentNode||r.parentId;... function Bc (line 320) | function Bc(e,t,n,r){const i=new Map,s={},o=r?1e3:0;return e.forEach(a=>... function e2 (line 320) | function e2(e,t={}){const{getNodes:n,width:r,height:i,minZoom:s,maxZoom:... function wz (line 320) | function wz(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,... function bz (line 320) | function bz(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return ... function ja (line 320) | function ja({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInter... function Au (line 320) | function Au(){const e=_z(),t=qe(),n=T.useCallback(()=>t.getState().getNo... function Nz (line 320) | function Nz(e){const t=qe();T.useEffect(()=>{let n;const r=()=>{var s,o;... function Mz (line 320) | function Mz(){const{userSelectionActive:e,userSelectionRect:t}=De(jz,Oe)... function Iy (line 320) | function Iy(e,t){const n=t.parentNode||t.parentId,r=e.find(i=>i.id===n);... function t2 (line 320) | function t2(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.typ... function n2 (line 320) | function n2(e,t){return t2(e,t)} function Dz (line 320) | function Dz(e,t){return t2(e,t)} function Ii (line 320) | function Ii(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return... function i2 (line 320) | function i2(e,t){const n=e.parentNode||e.parentId;if(!n)return!1;const r... function Ly (line 320) | function Ly(e,t,n){let r=e;do{if(r!=null&&r.matches(t))return!0;if(r===n... function Lz (line 320) | function Lz(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected... function Rz (line 320) | function Rz(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[... function s2 (line 320) | function s2(e,t,n,r,i=[0,0],s){const o=Rz(e,e.extent||r);let a=o;const l... function Uc (line 320) | function Uc({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(i=>({.... function Ms (line 320) | function Ms(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get... function Af (line 320) | function Af({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNod... function zz (line 320) | function zz(){const e=qe();return T.useCallback(({sourceEvent:n})=>{cons... function Wc (line 320) | function Wc(e){return(t,n,r)=>e==null?void 0:e(t,r)} function o2 (line 320) | function o2({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,... function a2 (line 320) | function a2(){const e=qe();return T.useCallback(n=>{const{nodeInternals:... function Oz (line 320) | function Oz({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA1... function Hz (line 320) | function Hz(e){return De(T.useCallback(n=>e?zk(n.nodeInternals,{x:0,y:0,... function Uz (line 320) | function Uz(e){const t={input:Ds(e.input||Gk),default:Ds(e.default||Tf),... function Qz (line 320) | function Qz(e){const t={default:gi(e.default||Ul),straight:gi(e.bezier||... function Oy (line 320) | function Oy(e,t,n=null){const r=((n==null?void 0:n.x)||0)+t.x,i=((n==nul... function Vy (line 320) | function Vy(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||... function Jz (line 320) | function Jz({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,target... function $y (line 320) | function $y(e){var r,i,s,o,a;const t=((r=e==null?void 0:e[Re])==null?voi... function tF (line 320) | function tF(e,t,n=!1){let r=-1;const i=e.reduce((o,a)=>{var c,d;const l=... function nF (line 320) | function nF(e,t,n){const r=De(T.useCallback(i=>e?i.edges.filter(s=>{cons... function sF (line 320) | function sF(e){const t=qe();return T.useMemo(()=>{var i,s;return Object.... function fF (line 320) | function fF({children:e}){const t=De(dF);return B.createElement("div",{c... function hF (line 320) | function hF(e){const t=Au(),n=T.useRef(!1);T.useEffect(()=>{!n.current&&... function gF (line 320) | function gF({containerStyle:e,style:t,type:n,component:r}){const{nodeId:... function Hy (line 320) | function Hy(e,t){return T.useRef(null),qe(),T.useMemo(()=>t(e),[e])} function g2 (line 320) | function g2(e){return t=>{const[n,r]=T.useState(t),i=T.useCallback(s=>r(... function NF (line 320) | function NF(){return B.createElement("svg",{xmlns:"http://www.w3.org/200... function TF (line 320) | function TF(){return B.createElement("svg",{xmlns:"http://www.w3.org/200... function AF (line 320) | function AF(){return B.createElement("svg",{xmlns:"http://www.w3.org/200... function PF (line 320) | function PF(){return B.createElement("svg",{xmlns:"http://www.w3.org/200... function jF (line 320) | function jF(){return B.createElement("svg",{xmlns:"http://www.w3.org/200... function IF (line 320) | function IF({color:e,dimensions:t,lineWidth:n}){return B.createElement("... function LF (line 320) | function LF({color:e,radius:t}){return B.createElement("circle",{cx:t,cy... function x2 (line 320) | function x2({id:e,variant:t=ln.Dots,gap:n=20,size:r,lineWidth:i=1,offset... FILE: galaxy/webui/frontend/src/components/chat/Composer.tsx constant QUICK_COMMANDS (line 7) | const QUICK_COMMANDS = [ FILE: galaxy/webui/frontend/src/components/chat/MessageBubble.tsx type MessageBubbleProps (line 25) | interface MessageBubbleProps { type PayloadRecord (line 31) | type PayloadRecord = Record; FILE: galaxy/webui/frontend/src/components/common/SearchFilterBar.tsx constant MESSAGE_FILTERS (line 7) | const MESSAGE_FILTERS: Array<{ label: string; value: MessageKind | 'all'... FILE: galaxy/webui/frontend/src/components/constellation/ConstellationBlock.tsx type ConstellationBlockProps (line 8) | interface ConstellationBlockProps { FILE: galaxy/webui/frontend/src/components/constellation/ConstellationStats.tsx type ConstellationStatsProps (line 5) | interface ConstellationStatsProps { FILE: galaxy/webui/frontend/src/components/constellation/DagPreview.tsx type DagPreviewProps (line 21) | interface DagPreviewProps { type StarNodeData (line 98) | type StarNodeData = { FILE: galaxy/webui/frontend/src/components/devices/AddDeviceModal.tsx type AddDeviceModalProps (line 5) | interface AddDeviceModalProps { type DeviceFormData (line 12) | interface DeviceFormData { FILE: galaxy/webui/frontend/src/components/layout/NotificationCenter.tsx constant AUTO_DISMISS_DELAY (line 15) | const AUTO_DISMISS_DELAY = 5000; FILE: galaxy/webui/frontend/src/components/layout/StarfieldOverlay.tsx type StarConfig (line 3) | interface StarConfig { type ShootingStarConfig (line 12) | interface ShootingStarConfig { FILE: galaxy/webui/frontend/src/components/tasks/TaskDetailPanel.tsx type TaskDetailPanelProps (line 6) | interface TaskDetailPanelProps { FILE: galaxy/webui/frontend/src/components/tasks/TaskList.tsx type TaskListProps (line 6) | interface TaskListProps { FILE: galaxy/webui/frontend/src/config/api.ts function getApiBaseUrl (line 4) | function getApiBaseUrl(): string { constant API_BASE_URL (line 21) | const API_BASE_URL = getApiBaseUrl(); function getApiUrl (line 24) | function getApiUrl(path: string): string { FILE: galaxy/webui/frontend/src/services/websocket.ts type GalaxyEvent (line 2) | interface GalaxyEvent { type EventCallback (line 33) | type EventCallback = (event: GalaxyEvent) => void; type StatusCallback (line 34) | type StatusCallback = (status: 'connecting' | 'connected' | 'disconnecte... class WebSocketClient (line 36) | class WebSocketClient { method constructor (line 46) | constructor(url?: string) { method connect (line 57) | connect(): Promise { method attemptReconnect (line 102) | private attemptReconnect() { method disconnect (line 121) | disconnect() { method send (line 130) | send(data: any) { method sendRequest (line 138) | sendRequest(request: string) { method sendReset (line 146) | sendReset() { method sendPing (line 153) | sendPing() { method onEvent (line 160) | onEvent(callback: EventCallback) { method onStatusChange (line 167) | onStatusChange(callback: StatusCallback) { method notifyCallbacks (line 174) | private notifyCallbacks(event: GalaxyEvent) { method notifyStatus (line 190) | private notifyStatus(status: 'connecting' | 'connected' | 'disconnecte... method isConnected (line 200) | get isConnected(): boolean { function getWebSocketClient (line 208) | function getWebSocketClient(): WebSocketClient { FILE: galaxy/webui/frontend/src/store/galaxyStore.ts type ConnectionStatus (line 9) | type ConnectionStatus = 'idle' | 'connecting' | 'connected' | 'reconnect... type MessageRole (line 11) | type MessageRole = 'user' | 'assistant' | 'system'; type MessageKind (line 12) | type MessageKind = 'user' | 'response' | 'action' | 'system'; type TaskStatus (line 14) | type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skip... type DependencyType (line 15) | type DependencyType = 'unconditional' | 'conditional' | 'success_only' |... type DeviceStatus (line 16) | type DeviceStatus = type NotificationSeverity (line 26) | type NotificationSeverity = 'info' | 'success' | 'warning' | 'error'; type Message (line 28) | interface Message { type DagNode (line 42) | interface DagNode { type DagEdge (line 49) | interface DagEdge { type TaskLogEntry (line 56) | interface TaskLogEntry { type Task (line 64) | interface Task { type ConstellationSummary (line 87) | interface ConstellationSummary { type Device (line 109) | interface Device { type NotificationItem (line 127) | interface NotificationItem { type SessionState (line 139) | interface SessionState { type UIState (line 148) | interface UIState { type GalaxyStore (line 163) | interface GalaxyStore { constant MAX_MESSAGES (line 222) | const MAX_MESSAGES = 500; constant MAX_NOTIFICATIONS (line 223) | const MAX_NOTIFICATIONS = 30; constant MAX_EVENTS (line 224) | const MAX_EVENTS = 200; FILE: galaxy/webui/handlers/websocket_handlers.py class WebSocketMessageHandler (line 23) | class WebSocketMessageHandler: method __init__ (line 31) | def __init__(self, app_state: AppState) -> None: method handle_message (line 42) | async def handle_message(self, websocket: WebSocket, data: dict) -> None: method _handle_ping (line 66) | async def _handle_ping(self, websocket: WebSocket, data: dict) -> None: method _handle_request (line 84) | async def _handle_request(self, websocket: WebSocket, data: dict) -> N... method _handle_reset (line 141) | async def _handle_reset(self, websocket: WebSocket, data: dict) -> None: method _handle_next_session (line 181) | async def _handle_next_session(self, websocket: WebSocket, data: dict)... method _handle_stop_task (line 222) | async def _handle_stop_task(self, websocket: WebSocket, data: dict) ->... method _handle_unknown (line 268) | async def _handle_unknown(self, websocket: WebSocket, message_type: st... method send_welcome_message (line 285) | async def send_welcome_message(self, websocket: WebSocket) -> None: FILE: galaxy/webui/models/enums.py class WebSocketMessageType (line 14) | class WebSocketMessageType(str, Enum): class RequestStatus (line 40) | class RequestStatus(str, Enum): FILE: galaxy/webui/models/requests.py class DeviceAddRequest (line 18) | class DeviceAddRequest(BaseModel): class WebSocketMessage (line 45) | class WebSocketMessage(BaseModel): class PingMessage (line 59) | class PingMessage(BaseModel): class RequestMessage (line 69) | class RequestMessage(BaseModel): class ResetMessage (line 80) | class ResetMessage(BaseModel): class NextSessionMessage (line 90) | class NextSessionMessage(BaseModel): class StopTaskMessage (line 101) | class StopTaskMessage(BaseModel): FILE: galaxy/webui/models/responses.py class StandardResponse (line 18) | class StandardResponse(BaseModel): class HealthResponse (line 38) | class HealthResponse(BaseModel): class DeviceAddResponse (line 50) | class DeviceAddResponse(BaseModel): class WelcomeMessage (line 62) | class WelcomeMessage(BaseModel): class PongMessage (line 76) | class PongMessage(BaseModel): class RequestReceivedMessage (line 87) | class RequestReceivedMessage(BaseModel): class RequestCompletedMessage (line 101) | class RequestCompletedMessage(BaseModel): class RequestFailedMessage (line 116) | class RequestFailedMessage(BaseModel): class ResetAcknowledgedMessage (line 131) | class ResetAcknowledgedMessage(BaseModel): class NextSessionAcknowledgedMessage (line 148) | class NextSessionAcknowledgedMessage(BaseModel): class StopAcknowledgedMessage (line 171) | class StopAcknowledgedMessage(BaseModel): class ErrorMessage (line 189) | class ErrorMessage(BaseModel): FILE: galaxy/webui/routers/devices.py function add_device (line 25) | async def add_device(device: DeviceAddRequest) -> Dict[str, Any]: FILE: galaxy/webui/routers/health.py function health_check (line 21) | async def health_check() -> Dict[str, Any]: FILE: galaxy/webui/routers/websocket.py function websocket_endpoint (line 23) | async def websocket_endpoint(websocket: WebSocket) -> None: FILE: galaxy/webui/server.py function lifespan (line 38) | async def lifespan(app: FastAPI): function logo (line 108) | async def logo() -> FileResponse: function root (line 121) | async def root() -> HTMLResponse: function set_galaxy_session (line 156) | def set_galaxy_session(session: "GalaxySession") -> None: function set_galaxy_client (line 166) | def set_galaxy_client(client: "GalaxyClient") -> None: function start_server (line 176) | def start_server(host: str = "0.0.0.0", port: int = 8000) -> None: FILE: galaxy/webui/services/config_service.py class ConfigService (line 18) | class ConfigService: method __init__ (line 26) | def __init__(self, config_dir: Path = Path("config/galaxy")) -> None: method load_devices_config (line 36) | def load_devices_config(self) -> Dict[str, Any]: method save_devices_config (line 60) | def save_devices_config(self, config_data: Dict[str, Any]) -> None: method get_all_device_ids (line 86) | def get_all_device_ids(self) -> List[str]: method device_id_exists (line 104) | def device_id_exists(self, device_id: str) -> bool: method add_device_to_config (line 114) | def add_device_to_config( FILE: galaxy/webui/services/device_service.py class DeviceService (line 17) | class DeviceService: method __init__ (line 25) | def __init__(self, app_state: AppState) -> None: method build_device_snapshot (line 34) | def build_device_snapshot(self) -> Optional[Dict[str, Dict[str, Any]]]: method get_device_manager (line 91) | def get_device_manager(self) -> Optional[Any]: method register_and_connect_device (line 107) | async def register_and_connect_device( FILE: galaxy/webui/services/galaxy_service.py class GalaxyService (line 18) | class GalaxyService: method __init__ (line 26) | def __init__(self, app_state: AppState) -> None: method is_client_available (line 35) | def is_client_available(self) -> bool: method process_request (line 43) | async def process_request(self, request_text: str) -> Any: method reset_session (line 76) | async def reset_session(self) -> Dict[str, Any]: method create_next_session (line 103) | async def create_next_session(self) -> Dict[str, Any]: method stop_task_and_restart (line 127) | async def stop_task_and_restart(self) -> Dict[str, Any]: FILE: galaxy/webui/websocket_observer.py class EventSerializer (line 28) | class EventSerializer: method __init__ (line 36) | def __init__(self) -> None: method _initialize_type_cache (line 48) | def _initialize_type_cache(self) -> None: method _register_handlers (line 73) | def _register_handlers(self) -> None: method serialize_event (line 88) | def serialize_event(self, event: Event) -> Dict[str, Any]: method _serialize_task_event_fields (line 115) | def _serialize_task_event_fields(self, event: TaskEvent) -> Dict[str, ... method _serialize_constellation_event_fields (line 129) | def _serialize_constellation_event_fields( method _serialize_agent_event_fields (line 144) | def _serialize_agent_event_fields(self, event: AgentEvent) -> Dict[str... method _serialize_device_event_fields (line 158) | def _serialize_device_event_fields(self, event: DeviceEvent) -> Dict[s... method serialize_value (line 172) | def serialize_value(self, value: Any) -> Any: method _serialize_task_star_line (line 230) | def _serialize_task_star_line(self, value: Any) -> Dict[str, Any]: method _serialize_constellation (line 243) | def _serialize_constellation(self, value: Any) -> Dict[str, Any]: method _serialize_constellation_tasks (line 277) | def _serialize_constellation_tasks( method _serialize_dependencies (line 318) | def _serialize_dependencies( method _extract_enum_value (line 347) | def _extract_enum_value(value: Any) -> Any: method _serialize_datetime (line 357) | def _serialize_datetime(dt: Optional[datetime]) -> Optional[str]: class WebSocketObserver (line 367) | class WebSocketObserver(IEventObserver): method __init__ (line 375) | def __init__(self) -> None: method on_event (line 382) | async def on_event(self, event: Event) -> None: method add_connection (line 416) | def add_connection(self, websocket: WebSocket) -> None: method remove_connection (line 427) | def remove_connection(self, websocket: WebSocket) -> None: method connection_count (line 439) | def connection_count(self) -> int: method total_events_sent (line 444) | def total_events_sent(self) -> int: FILE: learner/basic.py class BasicDocumentLoader (line 7) | class BasicDocumentLoader(ABC): method __init__ (line 12) | def __init__(self, extensions: str = None, directory: str = None): method load_file_name (line 20) | def load_file_name(self): method construct_document (line 29) | def construct_document(self): FILE: learner/indexer.py class DocumentsIndexer (line 13) | class DocumentsIndexer: method create_indexer (line 24) | def create_indexer( FILE: learner/json_loader.py class JsonLoader (line 12) | class JsonLoader(basic.BasicDocumentLoader): method __init__ (line 17) | def __init__(self, directory: str = None): method load_json_document (line 27) | def load_json_document(file: str) -> Dict: method construct_document (line 41) | def construct_document(self): FILE: learner/learner.py function main (line 32) | def main(): FILE: learner/utils.py function print_with_color (line 11) | def print_with_color(text: str, color: str = ""): function find_files_with_extension (line 35) | def find_files_with_extension(directory, extension): function find_files_with_extension_list (line 54) | def find_files_with_extension_list(directory, extensions): function load_json_file (line 73) | def load_json_file(file_path): function save_json_file (line 85) | def save_json_file(file_path, data): function reformat_json_file (line 95) | def reformat_json_file(file_path, template_path, data): FILE: learner/xml_loader.py class XMLLoader (line 11) | class XMLLoader(basic.BasicDocumentLoader): method __init__ (line 16) | def __init__(self, directory: str = None): method get_microsoft_document_metadata (line 25) | def get_microsoft_document_metadata(self, file: str): method get_microsoft_document_text (line 53) | def get_microsoft_document_text(self, file: str): method construct_document (line 67) | def construct_document(self): FILE: model_worker/custom_worker.py function direct_generate_llava (line 3) | def direct_generate_llava(self, params): function generate_llava (line 83) | async def generate_llava(request: Request): FILE: record_processor/parser/demonstration_record.py class DemonstrationStep (line 5) | class DemonstrationStep: method __init__ (line 11) | def __init__( class DemonstrationRecord (line 29) | class DemonstrationRecord: method __init__ (line 35) | def __init__(self, applications: list, step_num: int, **steps: Demonst... method set_request (line 47) | def set_request(self, request: str): method get_request (line 53) | def get_request(self) -> str: method get_applications (line 59) | def get_applications(self) -> list: method get_step_num (line 65) | def get_step_num(self) -> int: FILE: record_processor/parser/psr_record_parser.py class PSRRecordParser (line 12) | class PSRRecordParser: method __init__ (line 17) | def __init__(self, content: str): method parse_to_record (line 27) | def parse_to_record(self) -> DemonstrationRecord: method __find_boundary (line 47) | def __find_boundary(self) -> str: method __split_file_by_boundary (line 62) | def __split_file_by_boundary(self, boundary: str) -> dict: method __get_steps (line 112) | def __get_steps(self, content: str) -> dict: method __get_comments (line 154) | def __get_comments(self, content: str) -> dict: method __get_screenshot (line 177) | def __get_screenshot(self, screenshot_file_name: str) -> str: FILE: record_processor/record_processor.py function main (line 33) | def main(): function __asker (line 85) | def __asker(summaries) -> Tuple[bool, int]: FILE: record_processor/summarizer/summarizer.py class DemonstrationSummarizer (line 18) | class DemonstrationSummarizer: method __init__ (line 40) | def __init__( method get_summary_list (line 61) | def get_summary_list(self, record: DemonstrationRecord) -> Tuple[list,... method __build_prompt (line 82) | def __build_prompt(self, demo_record: DemonstrationRecord) -> list: method __parse_response (line 106) | def __parse_response(self, response_string: str) -> dict: method create_or_update_yaml (line 138) | def create_or_update_yaml(summaries: list, yaml_path: str): method create_or_update_vector_db (line 173) | def create_or_update_vector_db(summaries: list, db_path: str): FILE: record_processor/utils/__init__.py function unzip_and_read_file (line 10) | def unzip_and_read_file(file_path: str) -> str: function unzip_file (line 22) | def unzip_file(zip_file_path: str) -> str: function save_to_json (line 42) | def save_to_json(data: dict, output_file_path: str): function create_folder (line 58) | def create_folder(folder_path: str): function json_parser (line 67) | def json_parser(json_string:str): FILE: tests/aip/test_binary_transfer.py class TestWebSocketAdapterBinary (line 38) | class TestWebSocketAdapterBinary: method test_fastapi_adapter_send_bytes (line 42) | async def test_fastapi_adapter_send_bytes(self): method test_fastapi_adapter_receive_bytes (line 56) | async def test_fastapi_adapter_receive_bytes(self): method test_fastapi_adapter_receive_auto_binary (line 69) | async def test_fastapi_adapter_receive_auto_binary(self): method test_fastapi_adapter_receive_auto_text (line 82) | async def test_fastapi_adapter_receive_auto_text(self): method test_websockets_lib_adapter_send_bytes (line 95) | async def test_websockets_lib_adapter_send_bytes(self): method test_websockets_lib_adapter_receive_bytes (line 109) | async def test_websockets_lib_adapter_receive_bytes(self): method test_websockets_lib_adapter_receive_bytes_error (line 123) | async def test_websockets_lib_adapter_receive_bytes_error(self): method test_websockets_lib_adapter_receive_auto (line 135) | async def test_websockets_lib_adapter_receive_auto(self): class TestWebSocketTransportBinary (line 154) | class TestWebSocketTransportBinary: method test_send_binary (line 158) | async def test_send_binary(self): method test_send_binary_not_connected (line 174) | async def test_send_binary_not_connected(self): method test_receive_binary (line 182) | async def test_receive_binary(self): method test_receive_auto_binary (line 199) | async def test_receive_auto_binary(self): method test_receive_auto_text (line 215) | async def test_receive_auto_text(self): class TestAIPProtocolBinary (line 236) | class TestAIPProtocolBinary: method test_send_binary_message (line 240) | async def test_send_binary_message(self): method test_receive_binary_message (line 266) | async def test_receive_binary_message(self): method test_receive_binary_message_size_validation_fail (line 296) | async def test_receive_binary_message_size_validation_fail(self): method test_send_file (line 319) | async def test_send_file(self): method test_receive_file (line 351) | async def test_receive_file(self): class TestBinaryMessageTypes (line 422) | class TestBinaryMessageTypes: method test_binary_metadata (line 425) | def test_binary_metadata(self): method test_file_transfer_start (line 438) | def test_file_transfer_start(self): method test_file_transfer_complete (line 451) | def test_file_transfer_complete(self): method test_chunk_metadata (line 460) | def test_chunk_metadata(self): class TestBinaryTransferIntegration (line 473) | class TestBinaryTransferIntegration: method test_full_binary_message_roundtrip (line 477) | async def test_full_binary_message_roundtrip(self): method test_full_file_transfer_roundtrip (line 484) | async def test_full_file_transfer_roundtrip(self): FILE: tests/aip/test_endpoints.py class TestDeviceServerEndpoint (line 21) | class TestDeviceServerEndpoint: method mock_managers (line 25) | def mock_managers(self): method test_endpoint_creation (line 36) | async def test_endpoint_creation(self, mock_managers): method test_start_stop (line 51) | async def test_start_stop(self, mock_managers): method test_cancel_device_tasks (line 64) | async def test_cancel_device_tasks(self, mock_managers): class TestConstellationEndpoint (line 80) | class TestConstellationEndpoint: method test_endpoint_creation (line 84) | async def test_endpoint_creation(self): method test_start_stop (line 95) | async def test_start_stop(self): class TestBackwardCompatibility (line 111) | class TestBackwardCompatibility: method test_import_from_contracts (line 114) | def test_import_from_contracts(self): method test_message_creation_compatibility (line 129) | def test_message_creation_compatibility(self): FILE: tests/aip/test_integration.py class MockWebSocketTransport (line 28) | class MockWebSocketTransport(WebSocketTransport): method __init__ (line 31) | def __init__(self): method connect (line 37) | async def connect(self, url: str, **kwargs) -> None: method send (line 40) | async def send(self, data: bytes) -> None: method receive (line 43) | async def receive(self) -> bytes: method close (line 46) | async def close(self) -> None: class TestProtocolIntegration (line 50) | class TestProtocolIntegration: method test_registration_flow (line 54) | async def test_registration_flow(self): method test_heartbeat_exchange (line 91) | async def test_heartbeat_exchange(self): class TestMessageFlow (line 109) | class TestMessageFlow: method test_task_request_flow (line 113) | async def test_task_request_flow(self): method test_error_handling (line 136) | async def test_error_handling(self): FILE: tests/aip/test_messages.py class TestMessages (line 26) | class TestMessages: method test_client_message_creation (line 29) | def test_client_message_creation(self): method test_server_message_creation (line 45) | def test_server_message_creation(self): method test_message_serialization (line 66) | def test_message_serialization(self): method test_message_deserialization (line 79) | def test_message_deserialization(self): method test_command_structure (line 96) | def test_command_structure(self): method test_result_structure (line 110) | def test_result_structure(self): method test_result_with_error (line 123) | def test_result_with_error(self): class TestMessageValidator (line 136) | class TestMessageValidator: method test_validate_registration (line 139) | def test_validate_registration(self): method test_validate_registration_missing_client_id (line 149) | def test_validate_registration_missing_client_id(self): method test_validate_task_request (line 158) | def test_validate_task_request(self): method test_validate_task_request_missing_request (line 169) | def test_validate_task_request_missing_request(self): method test_validate_command_results (line 179) | def test_validate_command_results(self): method test_validate_server_message (line 191) | def test_validate_server_message(self): FILE: tests/aip/test_protocol.py class MockTransport (line 37) | class MockTransport(Transport): method __init__ (line 40) | def __init__(self): method connect (line 46) | async def connect(self, url: str, **kwargs) -> None: method send (line 49) | async def send(self, data: bytes) -> None: method receive (line 52) | async def receive(self) -> bytes: method close (line 55) | async def close(self) -> None: method wait_closed (line 58) | async def wait_closed(self) -> None: class TestAIPProtocol (line 62) | class TestAIPProtocol: method test_protocol_send_message (line 66) | async def test_protocol_send_message(self): method test_protocol_receive_message (line 83) | async def test_protocol_receive_message(self): method test_protocol_is_connected (line 100) | def test_protocol_is_connected(self): class TestRegistrationProtocol (line 111) | class TestRegistrationProtocol: method test_register_as_device (line 115) | async def test_register_as_device(self): method test_register_as_constellation (line 142) | async def test_register_as_constellation(self): class TestTaskExecutionProtocol (line 169) | class TestTaskExecutionProtocol: method test_send_task_request (line 173) | async def test_send_task_request(self): method test_send_command (line 191) | async def test_send_command(self): method test_send_task_end (line 214) | async def test_send_task_end(self): class TestHeartbeatProtocol (line 231) | class TestHeartbeatProtocol: method test_send_heartbeat (line 235) | async def test_send_heartbeat(self): method test_heartbeat_loop (line 247) | async def test_heartbeat_loop(self): class TestDeviceInfoProtocol (line 264) | class TestDeviceInfoProtocol: method test_request_device_info (line 268) | async def test_request_device_info(self): method test_send_device_info_response (line 284) | async def test_send_device_info_response(self): FILE: tests/aip/test_resilience.py class TestReconnectionStrategy (line 25) | class TestReconnectionStrategy: method test_exponential_backoff (line 29) | async def test_exponential_backoff(self): method test_linear_backoff (line 49) | async def test_linear_backoff(self): method test_immediate_reconnect (line 65) | async def test_immediate_reconnect(self): method test_reset (line 74) | async def test_reset(self): class TestHeartbeatManager (line 84) | class TestHeartbeatManager: method mock_protocol (line 88) | def mock_protocol(self): method test_start_heartbeat (line 118) | async def test_start_heartbeat(self, mock_protocol): method test_stop_nonexistent_heartbeat (line 136) | async def test_stop_nonexistent_heartbeat(self, mock_protocol): method test_stop_all_heartbeats (line 144) | async def test_stop_all_heartbeats(self, mock_protocol): class TestTimeoutManager (line 160) | class TestTimeoutManager: method test_with_timeout_success (line 164) | async def test_with_timeout_success(self): method test_with_timeout_exceeded (line 177) | async def test_with_timeout_exceeded(self): method test_with_timeout_or_none (line 189) | async def test_with_timeout_or_none(self): method test_custom_timeout_override (line 204) | async def test_custom_timeout_override(self): FILE: tests/aip/test_transport.py class MockTransport (line 17) | class MockTransport(Transport): method __init__ (line 20) | def __init__(self): method connect (line 25) | async def connect(self, url: str, **kwargs) -> None: method send (line 29) | async def send(self, data: bytes) -> None: method receive (line 35) | async def receive(self) -> bytes: method close (line 41) | async def close(self) -> None: method wait_closed (line 45) | async def wait_closed(self) -> None: class TestTransportBase (line 50) | class TestTransportBase: method test_transport_states (line 54) | async def test_transport_states(self): method test_send_when_not_connected (line 70) | async def test_send_when_not_connected(self): method test_receive_when_not_connected (line 78) | async def test_receive_when_not_connected(self): method test_send_receive_flow (line 86) | async def test_send_receive_flow(self): class TestWebSocketTransport (line 104) | class TestWebSocketTransport: method test_websocket_transport_init (line 107) | def test_websocket_transport_init(self): method test_websocket_transport_repr (line 120) | def test_websocket_transport_repr(self): method test_websocket_idempotent_close (line 129) | async def test_websocket_idempotent_close(self): FILE: tests/bug_summary_report.py function print_bug_summary (line 12) | def print_bug_summary(): FILE: tests/clients/test_comprehensive_client_types.py function comprehensive_client_type_test (line 22) | async def comprehensive_client_type_test(): function main (line 177) | async def main(): FILE: tests/clients/test_constellation_client.py function test_constellation_client (line 26) | async def test_constellation_client(): function test_device_operations (line 132) | async def test_device_operations(): function main (line 171) | async def main(): FILE: tests/clients/test_constellation_validation.py class MockWebSocketConstellationValid (line 22) | class MockWebSocketConstellationValid: method __init__ (line 25) | def __init__(self): method accept (line 29) | async def accept(self): method receive_text (line 32) | async def receive_text(self): method send_text (line 49) | async def send_text(self, message): method close (line 52) | async def close(self): class MockWebSocketConstellationInvalid (line 56) | class MockWebSocketConstellationInvalid: method __init__ (line 59) | def __init__(self): method accept (line 63) | async def accept(self): method receive_text (line 66) | async def receive_text(self): method send_text (line 83) | async def send_text(self, message): method close (line 86) | async def close(self): function test_constellation_validation (line 90) | async def test_constellation_validation(): function main (line 165) | async def main(): FILE: tests/clients/test_device_validation.py function test_device_validation (line 24) | async def test_device_validation(): function main (line 108) | async def main(): FILE: tests/clients/test_handler_refactoring.py class MockWebSocket (line 22) | class MockWebSocket: method __init__ (line 25) | def __init__(self): method accept (line 29) | async def accept(self): method receive_text (line 32) | async def receive_text(self): method send_text (line 43) | async def send_text(self, message): method close (line 46) | async def close(self): function test_handler_methods (line 50) | async def test_handler_methods(): function main (line 135) | async def main(): FILE: tests/clients/test_server_client_recognition.py function test_server_client_recognition (line 22) | async def test_server_client_recognition(): function main (line 121) | async def main(): FILE: tests/clients/test_ws_client_types.py class TestWSClient (line 21) | class TestWSClient: method __init__ (line 24) | def __init__( method connect (line 35) | async def connect(self): method send_heartbeat (line 82) | async def send_heartbeat(self): method disconnect (line 105) | async def disconnect(self): function test_client_types (line 112) | async def test_client_types(): function main (line 165) | async def main(): FILE: tests/config/__init__.py function run_all_tests (line 23) | def run_all_tests(): FILE: tests/config/test_attribute_access_validation.py class AttributeAccessValidator (line 23) | class AttributeAccessValidator: method __init__ (line 26) | def __init__(self): method test_value (line 31) | def test_value( method _compare_values (line 76) | def _compare_values(self, val1: Any, val2: Any) -> bool: method test_ufo_system_config (line 102) | def test_ufo_system_config(self): method test_ufo_agent_config (line 130) | def test_ufo_agent_config(self): method test_ufo_rag_config (line 172) | def test_ufo_rag_config(self): method test_galaxy_constellation_config (line 200) | def test_galaxy_constellation_config(self): method test_galaxy_agent_config (line 246) | def test_galaxy_agent_config(self): method print_summary (line 291) | def print_summary(self): function main (line 334) | def main(): FILE: tests/config/test_config_loader.py class TestConfigLoader (line 26) | class TestConfigLoader(unittest.TestCase): method setUp (line 29) | def setUp(self): method create_config_file (line 39) | def create_config_file(self, path: str, content: dict): method test_load_new_config_only (line 47) | def test_load_new_config_only(self): method test_load_legacy_config_only (line 66) | def test_load_legacy_config_only(self): method test_load_both_configs_new_priority (line 85) | def test_load_both_configs_new_priority(self): method test_deep_merge_configs (line 106) | def test_deep_merge_configs(self): method test_multiple_yaml_files_merge (line 132) | def test_multiple_yaml_files_merge(self): method test_environment_overrides (line 154) | def test_environment_overrides(self): method test_no_config_found_error (line 174) | def test_no_config_found_error(self): method test_yaml_parsing_error_handling (line 186) | def test_yaml_parsing_error_handling(self): method test_cache_mechanism (line 208) | def test_cache_mechanism(self): method test_warning_on_duplicate_configs (line 225) | def test_warning_on_duplicate_configs(self): method test_warning_on_legacy_config (line 243) | def test_warning_on_legacy_config(self): class TestUFOConfig (line 261) | class TestUFOConfig(unittest.TestCase): method setUp (line 264) | def setUp(self): method create_config_file (line 273) | def create_config_file(self, path: str, content: dict): method test_typed_access (line 281) | def test_typed_access(self): method test_dict_access_backward_compatible (line 302) | def test_dict_access_backward_compatible(self): method test_dynamic_field_access (line 319) | def test_dynamic_field_access(self): method test_nested_dynamic_access (line 338) | def test_nested_dynamic_access(self): class TestGalaxyConfig (line 354) | class TestGalaxyConfig(unittest.TestCase): method setUp (line 357) | def setUp(self): method create_config_file (line 366) | def create_config_file(self, path: str, content: dict): method test_galaxy_config_loading (line 374) | def test_galaxy_config_loading(self): method test_galaxy_no_legacy_fallback (line 397) | def test_galaxy_no_legacy_fallback(self): class TestAPIBaseTransformations (line 409) | class TestAPIBaseTransformations(unittest.TestCase): method test_aoai_api_base_transformation (line 412) | def test_aoai_api_base_transformation(self): method test_openai_api_base_default (line 436) | def test_openai_api_base_default(self): method test_control_backend_list_conversion (line 451) | def test_control_backend_list_conversion(self): class TestConfigCaching (line 464) | class TestConfigCaching(unittest.TestCase): method test_global_config_cache (line 467) | def test_global_config_cache(self): method test_cache_reload (line 486) | def test_cache_reload(self): FILE: tests/config/test_galaxy_config.py function test_galaxy_config_basic_loading (line 11) | def test_galaxy_config_basic_loading(): function test_galaxy_agent_config_access (line 18) | def test_galaxy_agent_config_access(): function test_galaxy_constellation_config_access (line 47) | def test_galaxy_constellation_config_access(): function test_galaxy_lowercase_attribute_access (line 70) | def test_galaxy_lowercase_attribute_access(): function test_galaxy_backward_compatible_dict_access (line 93) | def test_galaxy_backward_compatible_dict_access(): function test_galaxy_config_usage_in_code (line 113) | def test_galaxy_config_usage_in_code(): function test_galaxy_config_types (line 144) | def test_galaxy_config_types(): function test_galaxy_config_caching (line 165) | def test_galaxy_config_caching(): function test_galaxy_config_reload (line 175) | def test_galaxy_config_reload(): FILE: tests/config/test_migration.py class TestConfigMigrator (line 25) | class TestConfigMigrator(unittest.TestCase): method setUp (line 28) | def setUp(self): method create_legacy_config (line 42) | def create_legacy_config(self): method test_check_legacy_exists (line 63) | def test_check_legacy_exists(self): method test_check_legacy_not_exists (line 73) | def test_check_legacy_not_exists(self): method test_discover_files (line 80) | def test_discover_files(self): method test_dry_run_migration (line 97) | def test_dry_run_migration(self): method test_actual_migration (line 114) | def test_actual_migration(self): method test_backup_creation (line 134) | def test_backup_creation(self): method test_migration_preserves_content (line 151) | def test_migration_preserves_content(self): method test_no_overwrite_without_confirmation (line 174) | def test_no_overwrite_without_confirmation(self): class TestMigrationScenarios (line 193) | class TestMigrationScenarios(unittest.TestCase): method setUp (line 196) | def setUp(self): method test_migration_with_subdirectories (line 209) | def test_migration_with_subdirectories(self): method test_migration_empty_legacy (line 231) | def test_migration_empty_legacy(self): method test_migration_preserves_file_permissions (line 242) | def test_migration_preserves_file_permissions(self): FILE: tests/config/test_migration_validation.py class ConfigValidator (line 24) | class ConfigValidator: method __init__ (line 27) | def __init__(self): method load_configs (line 33) | def load_configs(self): method get_nested_value (line 54) | def get_nested_value(self, config, path: str): method compare_value (line 68) | def compare_value(self, path: str, legacy_val, new_val) -> bool: method validate_flat_configs (line 111) | def validate_flat_configs(self): method validate_agent_configs (line 193) | def validate_agent_configs(self): method validate_rag_configs (line 258) | def validate_rag_configs(self): method validate_omniparser_config (line 301) | def validate_omniparser_config(self): method validate_third_party_configs (line 346) | def validate_third_party_configs(self): method generate_report (line 375) | def generate_report(self): method run (line 431) | def run(self): FILE: tests/config/test_validation.py class TestConfigValidator (line 24) | class TestConfigValidator(unittest.TestCase): method setUp (line 27) | def setUp(self): method create_config_file (line 40) | def create_config_file(self, path: str, content: dict): method test_valid_ufo_config (line 48) | def test_valid_ufo_config(self): method test_missing_required_section (line 73) | def test_missing_required_section(self): method test_placeholder_value_detection (line 101) | def test_placeholder_value_detection(self): method test_azure_ad_validation (line 133) | def test_azure_ad_validation(self): method test_aoai_deployment_id_warning (line 166) | def test_aoai_deployment_id_warning(self): method test_path_detection_new_only (line 198) | def test_path_detection_new_only(self): method test_path_detection_legacy_only (line 216) | def test_path_detection_legacy_only(self): method test_path_detection_both (line 237) | def test_path_detection_both(self): method test_no_config_error (line 260) | def test_no_config_error(self): class TestGalaxyValidator (line 274) | class TestGalaxyValidator(unittest.TestCase): method setUp (line 277) | def setUp(self): method create_config_file (line 290) | def create_config_file(self, path: str, content: dict): method test_valid_galaxy_config (line 298) | def test_valid_galaxy_config(self): method test_galaxy_no_legacy_path (line 320) | def test_galaxy_no_legacy_path(self): FILE: tests/confirm_old_handlers_restored.py function main (line 33) | def main(): FILE: tests/debug_observer_output.py function create_test_constellation (line 23) | def create_test_constellation(): function test_observer_with_old_handlers (line 54) | async def test_observer_with_old_handlers(): FILE: tests/demo_device_info.py function demo_device_info_collection (line 16) | def demo_device_info_collection(): FILE: tests/demo_galaxy_client_log_collection.py function create_mock_devices (line 30) | def create_mock_devices(): function create_mock_constellation_config (line 139) | def create_mock_constellation_config(devices): function create_mock_constellation_client (line 163) | def create_mock_constellation_client(devices): function create_mock_galaxy_session (line 189) | def create_mock_galaxy_session(): function demo_galaxy_client_log_collection (line 251) | async def demo_galaxy_client_log_collection(): FILE: tests/editors/comprehensive_demo.py function demo_serializable_parameters (line 24) | def demo_serializable_parameters(): function demo_command_registry (line 68) | def demo_command_registry(): function demo_validation_rollback (line 110) | def demo_validation_rollback(): function demo_advanced_features (line 186) | def demo_advanced_features(): function main (line 264) | def main(): FILE: tests/editors/constellation_editor_example.py function example_basic_operations (line 22) | def example_basic_operations(): function example_undo_redo (line 70) | def example_undo_redo(): function example_bulk_operations (line 107) | def example_bulk_operations(): function example_file_operations (line 186) | def example_file_operations(): function example_advanced_features (line 231) | def example_advanced_features(): function main (line 279) | def main(): FILE: tests/editors/debug_undo.py function test_simple_undo (line 16) | def test_simple_undo(): FILE: tests/editors/direct_json_test.py function test_individual_files (line 21) | def test_individual_files(): function test_method_signatures (line 158) | def test_method_signatures(): function main (line 215) | def main(): FILE: tests/editors/minimal_json_test.py class TaskStatus (line 19) | class TaskStatus(str, Enum): class TaskPriority (line 26) | class TaskPriority(str, Enum): class DeviceType (line 32) | class DeviceType(str, Enum): class DependencyType (line 37) | class DependencyType(str, Enum): class MinimalTaskStar (line 43) | class MinimalTaskStar: method __init__ (line 44) | def __init__(self, name: str = "", description: str = "", **kwargs): method to_dict (line 53) | def to_dict(self) -> Dict[str, Any]: method to_json (line 64) | def to_json(self, save_path: Optional[str] = None) -> str: method from_json (line 77) | def from_json( class MinimalTaskStarLine (line 109) | class MinimalTaskStarLine: method __init__ (line 110) | def __init__(self, from_task_id: str, to_task_id: str, **kwargs): method to_dict (line 118) | def to_dict(self) -> Dict[str, Any]: method to_json (line 128) | def to_json(self, save_path: Optional[str] = None) -> str: method from_json (line 141) | def from_json( function test_minimal_task_star (line 170) | def test_minimal_task_star(): function test_minimal_task_star_line (line 230) | def test_minimal_task_star_line(): function test_error_handling (line 290) | def test_error_handling(): function main (line 333) | def main(): FILE: tests/editors/simple_json_test.py function test_basic_json_operations (line 38) | def test_basic_json_operations(): function test_task_star_line_basic (line 100) | def test_task_star_line_basic(): function test_error_handling (line 162) | def test_error_handling(): function main (line 203) | def main(): FILE: tests/editors/test_constellation_editor.py function test_basic_task_operations (line 33) | def test_basic_task_operations(): function test_basic_dependency_operations (line 65) | def test_basic_dependency_operations(): function test_undo_redo_operations (line 104) | def test_undo_redo_operations(): function test_bulk_operations (line 148) | def test_bulk_operations(): function test_file_operations (line 212) | def test_file_operations(): function test_advanced_operations (line 253) | def test_advanced_operations(): function test_observer_pattern (line 318) | def test_observer_pattern(): function test_error_handling (line 348) | def test_error_handling(): function main (line 385) | def main(): FILE: tests/editors/test_constellation_json.py class TaskStatus (line 21) | class TaskStatus(str, Enum): class TaskPriority (line 28) | class TaskPriority(str, Enum): class DeviceType (line 34) | class DeviceType(str, Enum): class DependencyType (line 39) | class DependencyType(str, Enum): class ConstellationState (line 44) | class ConstellationState(str, Enum): class MinimalTaskStar (line 54) | class MinimalTaskStar: method __init__ (line 55) | def __init__(self, name: str = "", description: str = "", **kwargs): method to_dict (line 69) | def to_dict(self) -> Dict[str, Any]: method from_dict (line 86) | def from_dict(cls, data: Dict[str, Any]): class MinimalTaskStarLine (line 109) | class MinimalTaskStarLine: method __init__ (line 110) | def __init__(self, from_task_id: str, to_task_id: str, **kwargs): method to_dict (line 120) | def to_dict(self) -> Dict[str, Any]: method from_dict (line 133) | def from_dict(cls, data: Dict[str, Any]): class MinimalTaskConstellation (line 151) | class MinimalTaskConstellation: method __init__ (line 152) | def __init__( method execution_duration (line 174) | def execution_duration(self) -> Optional[float]: method add_task (line 181) | def add_task(self, task: MinimalTaskStar): method add_dependency (line 184) | def add_dependency(self, dependency: MinimalTaskStarLine): method to_dict (line 187) | def to_dict(self) -> Dict[str, Any]: method from_dict (line 223) | def from_dict(cls, data: Dict[str, Any]): method to_json (line 264) | def to_json(self, save_path: Optional[str] = None) -> str: method from_json (line 277) | def from_json( function test_task_constellation_json (line 300) | def test_task_constellation_json(): function test_error_handling (line 472) | def test_error_handling(): function main (line 515) | def main(): FILE: tests/editors/test_constellation_mcp.py function test_mcp_server (line 21) | def test_mcp_server(): function main (line 232) | def main(): FILE: tests/editors/test_constellation_mcp_simplified.py function test_mcp_server (line 21) | def test_mcp_server(): function main (line 187) | def main(): FILE: tests/editors/test_json_serialization.py function test_task_star_json (line 27) | def test_task_star_json(): function test_task_star_line_json (line 131) | def test_task_star_line_json(): function test_edge_cases (line 245) | def test_edge_cases(): function main (line 303) | def main(): FILE: tests/editors/test_mcp_basic.py function test_basic_operations (line 21) | def test_basic_operations(): function main (line 160) | def main(): FILE: tests/editors/test_only_undo.py function test_only_undo (line 13) | def test_only_undo(): FILE: tests/editors/test_updated_editor.py function test_serializable_parameters (line 24) | def test_serializable_parameters(): function test_command_registry (line 71) | def test_command_registry(): function test_validation_rollback (line 109) | def test_validation_rollback(): function test_undo_redo_with_validation (line 187) | def test_undo_redo_with_validation(): function main (line 216) | def main(): FILE: tests/examples/auto_id_example.py function example_basic_auto_id (line 24) | def example_basic_auto_id(): function example_mixed_ids (line 72) | def example_mixed_ids(): function example_sequential_generation (line 124) | def example_sequential_generation(): function example_error_handling (line 183) | def example_error_handling(): function example_json_serialization (line 237) | def example_json_serialization(): function main (line 276) | def main(): FILE: tests/examples/basemodel_example.py function example_basic_usage (line 35) | def example_basic_usage(): function example_json_persistence (line 62) | def example_json_persistence(): function example_data_validation (line 124) | def example_data_validation(): function example_api_integration (line 168) | def example_api_integration(): function main (line 220) | def main(): FILE: tests/examples/list_dict_compatibility_example.py function example_list_format (line 23) | def example_list_format(): function example_dict_format (line 71) | def example_dict_format(): function example_mixed_format (line 111) | def example_mixed_format(): function example_format_conversion (line 140) | def example_format_conversion(): function example_json_compatibility (line 181) | def example_json_compatibility(): function main (line 234) | def main(): FILE: tests/galaxy/client/run_disconnection_tests.py function main (line 16) | def main(): FILE: tests/galaxy/client/test_device_disconnection_reconnection.py class TestDeviceDisconnectionReconnection (line 34) | class TestDeviceDisconnectionReconnection: method device_manager (line 38) | def device_manager(self): method mock_device_id (line 48) | def mock_device_id(self): method setup_connected_device (line 53) | def setup_connected_device(self, device_manager, mock_device_id): method test_disconnection_updates_status (line 78) | async def test_disconnection_updates_status( method test_message_processor_handles_connection_closed (line 103) | async def test_message_processor_handles_connection_closed( method test_automatic_reconnection_scheduled (line 159) | async def test_automatic_reconnection_scheduled( method test_reconnection_updates_status_to_idle (line 200) | async def test_reconnection_updates_status_to_idle( method test_connection_attempts_increment (line 238) | async def test_connection_attempts_increment( method test_connection_attempts_reset_on_success (line 267) | async def test_connection_attempts_reset_on_success( method test_max_retry_limit_stops_reconnection (line 312) | async def test_max_retry_limit_stops_reconnection( method test_current_task_cancelled_on_disconnection (line 344) | async def test_current_task_cancelled_on_disconnection( method test_disconnection_event_notification (line 379) | async def test_disconnection_event_notification( method test_reconnection_event_notification (line 404) | async def test_reconnection_event_notification( method test_multiple_disconnection_reconnection_cycles (line 441) | async def test_multiple_disconnection_reconnection_cycles( method test_heartbeat_stops_on_disconnection (line 486) | async def test_heartbeat_stops_on_disconnection( method test_disconnection_handler_with_unregistered_device (line 531) | async def test_disconnection_handler_with_unregistered_device(self, de... method test_reconnection_attempts_tracking (line 549) | async def test_reconnection_attempts_tracking(self, device_manager, mo... class TestDisconnectionReconnectionIntegration (line 590) | class TestDisconnectionReconnectionIntegration: method test_full_disconnection_reconnection_flow (line 594) | async def test_full_disconnection_reconnection_flow(self): FILE: tests/galaxy/client/test_device_disconnection_task_handling.py function device_manager (line 23) | def device_manager(): function test_device_disconnection_during_task_execution_returns_failed_result (line 33) | async def test_device_disconnection_during_task_execution_returns_failed... function test_task_timeout_returns_failed_result_with_timeout_info (line 95) | async def test_task_timeout_returns_failed_result_with_timeout_info(devi... function test_websocket_connection_closed_exception_during_task (line 145) | async def test_websocket_connection_closed_exception_during_task(device_... function test_general_exception_returns_failed_result (line 189) | async def test_general_exception_returns_failed_result(device_manager): function test_successful_task_execution_returns_completed_result (line 233) | async def test_successful_task_execution_returns_completed_result(device... FILE: tests/galaxy/client/test_device_events.py class TestDeviceEventObserver (line 17) | class TestDeviceEventObserver(IEventObserver): method __init__ (line 20) | def __init__(self): method on_event (line 23) | async def on_event(self, event): function test_device_connected_event (line 29) | async def test_device_connected_event(): function test_device_disconnected_event (line 79) | async def test_device_disconnected_event(): function test_device_status_changed_event (line 123) | async def test_device_status_changed_event(): function test_device_registry_snapshot_in_events (line 191) | async def test_device_registry_snapshot_in_events(): FILE: tests/galaxy/client/test_device_manager_assign_task.py class TestAssignTaskToDevice (line 28) | class TestAssignTaskToDevice: method device_manager (line 32) | def device_manager(self): method mock_device_id (line 42) | def mock_device_id(self): method mock_execution_result (line 47) | def mock_execution_result(self): method setup_connected_device (line 57) | def setup_connected_device(self, device_manager, mock_device_id): method test_assign_task_to_idle_device (line 79) | async def test_assign_task_to_idle_device( method test_device_state_transitions (line 113) | async def test_device_state_transitions( method test_assign_task_to_busy_device_queues_task (line 163) | async def test_assign_task_to_busy_device_queues_task( method test_sequential_task_processing (line 219) | async def test_sequential_task_processing( method test_task_execution_error_handling (line 278) | async def test_task_execution_error_handling( method test_error_handling_with_queued_tasks (line 312) | async def test_error_handling_with_queued_tasks( method test_assign_task_to_unregistered_device (line 383) | async def test_assign_task_to_unregistered_device(self, device_manager): method test_assign_task_to_disconnected_device (line 400) | async def test_assign_task_to_disconnected_device( method test_queue_status_queries (line 426) | async def test_queue_status_queries( method test_concurrent_tasks_multiple_devices (line 511) | async def test_concurrent_tasks_multiple_devices( method test_task_timeout (line 598) | async def test_task_timeout(self, device_manager, setup_connected_devi... method test_task_request_creation (line 650) | async def test_task_request_creation( class TestAssignTaskIntegration (line 690) | class TestAssignTaskIntegration: method device_manager (line 694) | def device_manager(self): method test_realistic_workflow (line 714) | async def test_realistic_workflow(self, device_manager): FILE: tests/galaxy/client/test_device_manager_info_update.py class TestDeviceManagerInfoUpdate (line 15) | class TestDeviceManagerInfoUpdate: method test_connect_device_updates_device_info (line 19) | async def test_connect_device_updates_device_info(self): method test_get_device_system_info (line 104) | async def test_get_device_system_info(self): method test_connect_device_without_system_info (line 132) | async def test_connect_device_without_system_info(self): method test_multiple_devices_different_system_info (line 174) | async def test_multiple_devices_different_system_info(self): FILE: tests/galaxy/client/test_galaxy_client.py class TestGalaxyClient (line 23) | class TestGalaxyClient: method mock_constellation_client (line 27) | def mock_constellation_client(self): method mock_galaxy_session (line 36) | def mock_galaxy_session(self): method test_galaxy_client_initialization (line 47) | def test_galaxy_client_initialization(self): method test_galaxy_client_initialize (line 67) | async def test_galaxy_client_initialize( method test_process_request (line 87) | async def test_process_request( method test_process_request_failure (line 116) | async def test_process_request_failure( method test_shutdown (line 135) | async def test_shutdown(self, mock_constellation_client, mock_galaxy_s... method test_interactive_mode_commands (line 148) | async def test_interactive_mode_commands( method test_display_integration (line 165) | def test_display_integration(self): method test_galaxy_session_interface_compatibility (line 176) | async def test_galaxy_session_interface_compatibility( method test_status_display_integration (line 202) | def test_status_display_integration(self): class TestGalaxyClientIntegration (line 218) | class TestGalaxyClientIntegration: method test_full_workflow_simulation (line 221) | async def test_full_workflow_simulation(self): class TestGalaxyClientMockImplementation (line 264) | class TestGalaxyClientMockImplementation: method test_mock_creation (line 267) | def test_mock_creation(self): FILE: tests/galaxy/client/test_galaxy_client_cancellation.py function mock_client (line 29) | async def mock_client(): function test_shutdown_without_force_no_running_task (line 53) | async def test_shutdown_without_force_no_running_task(mock_client): function test_shutdown_without_force_with_completed_task (line 68) | async def test_shutdown_without_force_with_completed_task(mock_client): function test_shutdown_with_force_cancels_running_task (line 85) | async def test_shutdown_with_force_cancels_running_task(mock_client): function test_shutdown_with_force_handles_timeout (line 110) | async def test_shutdown_with_force_handles_timeout(mock_client): function test_shutdown_idempotency (line 136) | async def test_shutdown_idempotency(mock_client): function test_process_request_saves_task_reference (line 152) | async def test_process_request_saves_task_reference(mock_client): function test_process_request_clears_task_reference_on_completion (line 187) | async def test_process_request_clears_task_reference_on_completion(mock_... function test_process_request_clears_task_reference_on_error (line 216) | async def test_process_request_clears_task_reference_on_error(mock_client): function test_shutdown_handles_exception_gracefully (line 240) | async def test_shutdown_handles_exception_gracefully(mock_client): FILE: tests/galaxy/client/test_mock_and_visualization.py class MockGalaxyClientTester (line 33) | class MockGalaxyClientTester: method __init__ (line 36) | def __init__(self): method test_mock_client_integration (line 41) | async def test_mock_client_integration(self): method test_visualization_display_functions (line 106) | def test_visualization_display_functions(self): method test_display_formatting (line 170) | def test_display_formatting(self): method test_mock_constellation_agent (line 208) | async def test_mock_constellation_agent(self): method run_all_tests (line 245) | async def run_all_tests(self): function main (line 293) | async def main(): FILE: tests/galaxy/client/test_mock_functionality.py function test_create_simple_test_constellation (line 18) | def test_create_simple_test_constellation(): function test_mock_constellation_agent_creation (line 36) | async def test_mock_constellation_agent_creation(): function test_visualization_display (line 65) | def test_visualization_display(): FILE: tests/galaxy/client/test_pending_task_cancellation.py function device_manager (line 20) | def device_manager(): function test_pending_task_future_stored_with_device_id (line 30) | async def test_pending_task_future_stored_with_device_id(device_manager): function test_cancel_pending_tasks_for_device (line 53) | async def test_cancel_pending_tasks_for_device(device_manager): function test_disconnect_device_cancels_pending_tasks (line 99) | async def test_disconnect_device_cancels_pending_tasks(device_manager): function test_task_returns_immediately_when_device_disconnects (line 138) | async def test_task_returns_immediately_when_device_disconnects(device_m... function test_multiple_pending_tasks_all_cancelled_on_disconnection (line 209) | async def test_multiple_pending_tasks_all_cancelled_on_disconnection(dev... FILE: tests/galaxy/client/test_server_restart_reconnection.py function device_manager (line 24) | def device_manager(): function test_server_restart_automatic_reconnection (line 34) | async def test_server_restart_automatic_reconnection(device_manager): function test_reconnection_with_multiple_retries (line 121) | async def test_reconnection_with_multiple_retries(device_manager): function test_reconnection_succeeds_on_first_attempt (line 171) | async def test_reconnection_succeeds_on_first_attempt(device_manager): function test_is_reconnection_flag_prevents_attempt_increment (line 228) | async def test_is_reconnection_flag_prevents_attempt_increment(device_ma... function test_normal_connection_increments_attempts (line 270) | async def test_normal_connection_increments_attempts(device_manager): function test_full_server_restart_scenario_integration (line 313) | async def test_full_server_restart_scenario_integration(device_manager): function test_reconnection_stops_after_max_retries (line 424) | async def test_reconnection_stops_after_max_retries(device_manager): FILE: tests/galaxy/client/test_simple_mock.py function test_simple (line 10) | def test_simple(): function test_import_client_display (line 15) | def test_import_client_display(): function test_import_mock_agent (line 25) | def test_import_mock_agent(): FILE: tests/galaxy/client/test_target_device_not_registered.py class TestTargetDeviceNotRegistered (line 40) | class TestTargetDeviceNotRegistered: method device_manager (line 44) | def device_manager(self): method target_device_id (line 54) | def target_device_id(self): method server_url (line 59) | def server_url(self): method test_registration_fails_when_target_device_not_connected (line 68) | async def test_registration_fails_when_target_device_not_connected( method test_reconnection_after_target_device_becomes_available (line 129) | async def test_reconnection_after_target_device_becomes_available( method test_registration_timeout_when_server_not_responding (line 225) | async def test_registration_timeout_when_server_not_responding( method test_error_message_indicates_target_device_not_connected (line 271) | async def test_error_message_indicates_target_device_not_connected( method test_connection_attempts_incremented_on_failure (line 331) | async def test_connection_attempts_incremented_on_failure( FILE: tests/galaxy/client/test_task_response_mechanism.py class TestTaskResponseMechanism (line 45) | class TestTaskResponseMechanism: method constellation_id (line 49) | def constellation_id(self): method device_id (line 54) | def device_id(self): method task_id (line 59) | def task_id(self): method connection_manager (line 64) | def connection_manager(self, constellation_id): method device_registry (line 69) | def device_registry(self): method heartbeat_manager (line 74) | def heartbeat_manager(self, connection_manager, device_registry): method message_processor (line 83) | def message_processor(self, device_registry, heartbeat_manager): method mock_websocket (line 91) | def mock_websocket(self): method device_info (line 101) | def device_info(self, device_id): method task_request (line 110) | def task_request(self, task_id, device_id): method test_wait_for_task_response_creates_future (line 121) | async def test_wait_for_task_response_creates_future( method test_complete_task_response_resolves_future (line 157) | async def test_complete_task_response_resolves_future( method test_complete_task_response_cleans_up_future (line 195) | async def test_complete_task_response_cleans_up_future( method test_complete_task_response_unknown_task_warning (line 230) | async def test_complete_task_response_unknown_task_warning( method test_complete_task_response_duplicate_warning (line 260) | async def test_complete_task_response_duplicate_warning( method test_message_processor_calls_complete_task_response (line 311) | async def test_message_processor_calls_complete_task_response( method test_send_task_to_device_end_to_end (line 348) | async def test_send_task_to_device_end_to_end( method test_send_task_timeout_cleans_up_future (line 407) | async def test_send_task_timeout_cleans_up_future( method test_send_task_exception_cleans_up_future (line 440) | async def test_send_task_exception_cleans_up_future( method test_multiple_concurrent_tasks (line 465) | async def test_multiple_concurrent_tasks( method test_task_with_error_status (line 533) | async def test_task_with_error_status( method test_message_processor_without_connection_manager (line 583) | async def test_message_processor_without_connection_manager( FILE: tests/galaxy/constellation/run_all_tests.py function run_test (line 15) | def run_test(test_file: str, description: str) -> bool: function main (line 35) | def main(): FILE: tests/galaxy/constellation/test_constellation_parsing.py function test_constellation_parsing (line 17) | def test_constellation_parsing(log_file_path: str): FILE: tests/galaxy/constellation/test_constellation_parsing_debug.py function debug_constellation_fields (line 14) | def debug_constellation_fields(log_file_path: str): FILE: tests/galaxy/constellation/test_constellation_summary.py function test_working_vs_broken (line 64) | def test_working_vs_broken(): FILE: tests/galaxy/constellation/test_constellation_tasks_debug.py function debug_tasks_field (line 14) | def debug_tasks_field(log_file_path: str): FILE: tests/galaxy/constellation/test_orchestrator_cancellation.py function mock_orchestrator (line 28) | def mock_orchestrator(): function simple_constellation (line 38) | def simple_constellation(): function test_cancel_execution_sets_flags (line 58) | async def test_cancel_execution_sets_flags(mock_orchestrator): function test_cancel_execution_cancels_running_tasks (line 73) | async def test_cancel_execution_cancels_running_tasks(mock_orchestrator): function test_cancel_execution_skips_completed_tasks (line 96) | async def test_cancel_execution_skips_completed_tasks(mock_orchestrator): function test_execution_loop_checks_cancellation_flag (line 121) | async def test_execution_loop_checks_cancellation_flag( function test_execution_loop_stops_immediately_on_cancellation (line 160) | async def test_execution_loop_stops_immediately_on_cancellation( function test_execution_loop_checks_constellation_specific_cancellation (line 183) | async def test_execution_loop_checks_constellation_specific_cancellation( function test_cancel_execution_with_no_tasks (line 207) | async def test_cancel_execution_with_no_tasks(mock_orchestrator): function test_cancel_execution_waits_for_task_cancellation (line 221) | async def test_cancel_execution_waits_for_task_cancellation(mock_orchest... function test_multiple_cancel_execution_calls_are_idempotent (line 244) | async def test_multiple_cancel_execution_calls_are_idempotent(mock_orche... FILE: tests/galaxy/mocks.py function create_simple_test_constellation (line 27) | def create_simple_test_constellation( class MockConstellationAgent (line 68) | class MockConstellationAgent(ConstellationAgent): method __init__ (line 76) | def __init__( method message_constructor (line 89) | def message_constructor(self) -> List[Dict[str, Union[str, List[Dict[s... method process_confirmation (line 107) | async def process_confirmation(self, context: Context) -> bool: method process_creation (line 116) | async def process_creation( method process_editing (line 178) | async def process_editing( class MockTaskConstellationOrchestrator (line 313) | class MockTaskConstellationOrchestrator: method __init__ (line 316) | def __init__(self, device_manager=None, enable_logging=True): method execute_constellation (line 321) | async def execute_constellation(self, constellation): FILE: tests/galaxy/run_cancellation_tests.py function run_tests (line 24) | def run_tests(): FILE: tests/galaxy/session/test_galaxy_session.py function test_galaxy_session_basic_functionality (line 20) | async def test_galaxy_session_basic_functionality(): function test_galaxy_session_mock_execution (line 124) | async def test_galaxy_session_mock_execution(): function test_galaxy_session_issues (line 169) | async def test_galaxy_session_issues(): function main (line 260) | async def main(): FILE: tests/galaxy/session/test_galaxy_session_final.py function test_galaxy_session_complete_features (line 19) | async def test_galaxy_session_complete_features(): FILE: tests/galaxy/session/test_galaxy_session_integration.py function test_galaxy_session_workflow (line 19) | async def test_galaxy_session_workflow(): function test_galaxy_session_error_scenarios (line 147) | async def test_galaxy_session_error_scenarios(): function main (line 214) | async def main(): FILE: tests/galaxy/session/test_galaxy_session_proper_mock.py function setup_minimal_config (line 31) | def setup_minimal_config(): class MockConstellationClient (line 53) | class MockConstellationClient: method __init__ (line 56) | def __init__(self): class MockProcessor (line 61) | class MockProcessor: method __init__ (line 64) | def __init__(self, agent, global_context): method process (line 70) | async def process(self): function test_galaxy_session_with_proper_mocks (line 98) | async def test_galaxy_session_with_proper_mocks(): function test_agent_mocking_specifically (line 206) | async def test_agent_mocking_specifically(): function test_event_system_with_mocks (line 258) | async def test_event_system_with_mocks(): function main (line 303) | async def main(): FILE: tests/galaxy/session/test_session_cancellation.py function mock_session (line 31) | def mock_session(): function test_request_cancellation_sets_flags (line 56) | async def test_request_cancellation_sets_flags(mock_session): function test_request_cancellation_without_constellation (line 75) | async def test_request_cancellation_without_constellation(mock_session): function test_round_checks_cancellation_flag (line 91) | async def test_round_checks_cancellation_flag(): function test_round_stops_immediately_on_cancellation (line 143) | async def test_round_stops_immediately_on_cancellation(): function test_reset_clears_cancellation_flag (line 178) | async def test_reset_clears_cancellation_flag(mock_session): function test_force_finish_sets_finish_flag (line 193) | async def test_force_finish_sets_finish_flag(mock_session): function test_create_new_round_passes_session_reference (line 208) | async def test_create_new_round_passes_session_reference(mock_session): FILE: tests/galaxy/trajectory/test_topology_visualization.py function test_topology_visualization (line 25) | def test_topology_visualization(): FILE: tests/galaxy/visualization/test_constellation_formatter.py function test_formatter (line 19) | def test_formatter(): FILE: tests/galaxy/webui/test_websocket_server.py function test_client (line 15) | def test_client(): function test_health_endpoint (line 20) | def test_health_endpoint(test_client): function test_root_endpoint (line 31) | def test_root_endpoint(test_client): function test_websocket_connection (line 41) | async def test_websocket_connection(): function test_websocket_ping_pong (line 52) | async def test_websocket_ping_pong(): function test_websocket_request_without_client (line 69) | async def test_websocket_request_without_client(): function test_websocket_request_with_client (line 86) | async def test_websocket_request_with_client(): function test_websocket_reset (line 118) | async def test_websocket_reset(): function test_websocket_unknown_message (line 135) | async def test_websocket_unknown_message(): function test_static_file_serving (line 151) | def test_static_file_serving(test_client): FILE: tests/galaxy/webui/test_webui_stop_integration.py function mock_app_state (line 28) | async def mock_app_state(): function galaxy_service (line 61) | def galaxy_service(mock_app_state): function test_stop_task_and_restart_full_flow (line 68) | async def test_stop_task_and_restart_full_flow(galaxy_service, mock_app_... function test_stop_task_cancels_running_task (line 107) | async def test_stop_task_cancels_running_task(galaxy_service, mock_app_s... function test_stop_task_without_active_client (line 137) | async def test_stop_task_without_active_client(galaxy_service, mock_app_... function test_stop_task_handles_shutdown_error (line 148) | async def test_stop_task_handles_shutdown_error(galaxy_service, mock_app... function test_stop_task_handles_initialization_error (line 161) | async def test_stop_task_handles_initialization_error(galaxy_service, mo... function test_stop_task_resets_counter_even_on_error (line 174) | async def test_stop_task_resets_counter_even_on_error(galaxy_service, mo... function test_stop_task_with_no_running_task (line 193) | async def test_stop_task_with_no_running_task(galaxy_service, mock_app_s... function test_stop_task_shutdown_uses_force_true (line 216) | async def test_stop_task_shutdown_uses_force_true(galaxy_service, mock_a... function test_is_client_available_returns_correct_status (line 243) | async def test_is_client_available_returns_correct_status( FILE: tests/integration/galaxy/test_galaxy_state_machine_integration.py class TestConstellationExecutionToCompletion (line 47) | class TestConstellationExecutionToCompletion: method complete_constellation (line 51) | def complete_constellation(self): method mock_orchestrator_completion (line 74) | def mock_orchestrator_completion(self): method agent_no_updates (line 89) | def agent_no_updates(self): method test_constellation_completes_without_updates (line 101) | async def test_constellation_completes_without_updates( class TestMidExecutionAgentTermination (line 158) | class TestMidExecutionAgentTermination: method partial_constellation (line 162) | def partial_constellation(self): method early_termination_agent (line 174) | def early_termination_agent(self): method mock_orchestrator_partial (line 202) | def mock_orchestrator_partial(self): method test_agent_terminates_mid_execution (line 277) | async def test_agent_terminates_mid_execution( class TestConstellationWithNewTaskAddition (line 369) | class TestConstellationWithNewTaskAddition: method expandable_constellation (line 373) | def expandable_constellation(self): method expansion_agent (line 386) | def expansion_agent(self): method mock_orchestrator_expansion (line 437) | def mock_orchestrator_expansion(self): method test_constellation_expansion_after_completion (line 495) | async def test_constellation_expansion_after_completion( class TestComplexMultiRoundScenarios (line 565) | class TestComplexMultiRoundScenarios: method multi_round_agent (line 569) | def multi_round_agent(self): method multi_round_session (line 606) | def multi_round_session(self, multi_round_agent): method test_multi_round_execution_with_state_persistence (line 670) | async def test_multi_round_execution_with_state_persistence( class TestRaceConditionHandling (line 732) | class TestRaceConditionHandling: method race_condition_setup (line 736) | def race_condition_setup(self): method rapid_completion_orchestrator (line 762) | def rapid_completion_orchestrator(self): method test_race_condition_handling (line 791) | async def test_race_condition_handling( class TestEventOrderingAndSynchronization (line 884) | class TestEventOrderingAndSynchronization: method test_event_ordering_in_monitor_state (line 888) | async def test_event_ordering_in_monitor_state(self): FILE: tests/integration/galaxy/test_galaxy_state_machine_simple.py class TestGalaxyAgentStateMachineSimple (line 30) | class TestGalaxyAgentStateMachineSimple: method simple_constellation (line 34) | def simple_constellation(self): method mock_agent (line 48) | def mock_agent(self): method test_agent_completes_successfully (line 56) | async def test_agent_completes_successfully(self, simple_constellation... method test_agent_continues_processing (line 109) | async def test_agent_continues_processing(self, simple_constellation, ... method test_agent_handles_failure (line 155) | async def test_agent_handles_failure(self, simple_constellation, mock_... FILE: tests/integration/test_constellation_aip_communication.py class MockWebSocket (line 28) | class MockWebSocket: method __init__ (line 31) | def __init__(self): method send (line 37) | async def send(self, message: str): method recv (line 41) | async def recv(self): method close (line 45) | async def close(self): method add_message (line 49) | def add_message(self, message: str): method remote_address (line 54) | def remote_address(self): function device_registry (line 60) | def device_registry(): function connection_manager (line 67) | def connection_manager(): function message_processor (line 76) | def message_processor(connection_manager): function heartbeat_manager (line 83) | def heartbeat_manager(connection_manager, device_registry): function test_connection_manager_uses_aip_transport (line 94) | async def test_connection_manager_uses_aip_transport( function test_registration_with_aip_protocol (line 139) | async def test_registration_with_aip_protocol(connection_manager): function test_send_task_to_device_with_aip (line 176) | async def test_send_task_to_device_with_aip(connection_manager): function test_heartbeat_with_aip_protocol (line 242) | async def test_heartbeat_with_aip_protocol(connection_manager, heartbeat... function test_request_device_info_with_aip (line 290) | async def test_request_device_info_with_aip(connection_manager): function test_message_processor_handles_aip_messages (line 342) | async def test_message_processor_handles_aip_messages( function test_disconnect_cleans_up_aip_protocols (line 389) | async def test_disconnect_cleans_up_aip_protocols(connection_manager): function test_error_handling_in_aip_communication (line 425) | async def test_error_handling_in_aip_communication(connection_manager): function test_concurrent_operations_with_aip (line 478) | async def test_concurrent_operations_with_aip(connection_manager): function test_heartbeat_cleanup_on_stop (line 534) | async def test_heartbeat_cleanup_on_stop(heartbeat_manager, connection_m... FILE: tests/integration/test_constellation_aip_simple.py class MockTransport (line 25) | class MockTransport: method __init__ (line 28) | def __init__(self): method send (line 33) | async def send(self, message: bytes): method receive (line 36) | async def receive(self) -> bytes: method close (line 39) | async def close(self): function test_heartbeat_protocol_integration (line 44) | async def test_heartbeat_protocol_integration(): function test_registration_protocol_integration (line 69) | async def test_registration_protocol_integration(): function test_registration_protocol_error_handling (line 105) | async def test_registration_protocol_error_handling(): function test_websocket_transport_adapter (line 129) | async def test_websocket_transport_adapter(): function test_heartbeat_manager_creates_protocol (line 159) | async def test_heartbeat_manager_creates_protocol(): function test_connection_manager_has_aip_components (line 186) | async def test_connection_manager_has_aip_components(): FILE: tests/integration/test_constellation_server_compatibility.py class MockServer (line 31) | class MockServer: method __init__ (line 34) | def __init__(self): method handle_client_message (line 38) | async def handle_client_message(self, message: ClientMessage) -> Serve... function mock_server (line 99) | def mock_server(): class TestConstellationRegistrationCompatibility (line 104) | class TestConstellationRegistrationCompatibility: method test_registration_message_can_be_parsed_by_server (line 108) | async def test_registration_message_can_be_parsed_by_server(self, mock... method test_registration_via_protocol (line 137) | async def test_registration_via_protocol(self, mock_server): class TestConstellationHeartbeatCompatibility (line 176) | class TestConstellationHeartbeatCompatibility: method test_heartbeat_message_format (line 180) | async def test_heartbeat_message_format(self, mock_server): method test_heartbeat_via_protocol (line 196) | async def test_heartbeat_via_protocol(self, mock_server): class TestConstellationTaskCompatibility (line 224) | class TestConstellationTaskCompatibility: method test_task_message_format (line 228) | async def test_task_message_format(self, mock_server): method test_task_via_protocol (line 249) | async def test_task_via_protocol(self, mock_server): class TestConstellationDeviceInfoCompatibility (line 286) | class TestConstellationDeviceInfoCompatibility: method test_device_info_request_format (line 290) | async def test_device_info_request_format(self, mock_server): method test_device_info_via_protocol (line 310) | async def test_device_info_via_protocol(self, mock_server): class TestMessageSerializationConsistency (line 343) | class TestMessageSerializationConsistency: method test_registration_message_json_format (line 346) | def test_registration_message_json_format(self): method test_task_message_json_format (line 370) | def test_task_message_json_format(self): method test_server_response_parsing (line 395) | def test_server_response_parsing(self): class TestEndToEndMessageFlow (line 413) | class TestEndToEndMessageFlow: method test_complete_registration_flow (line 417) | async def test_complete_registration_flow(self, mock_server): method test_complete_task_execution_flow (line 459) | async def test_complete_task_execution_flow(self, mock_server): method test_heartbeat_sequence (line 494) | async def test_heartbeat_sequence(self, mock_server): FILE: tests/integration/test_device_communication.py class MockWebSocket (line 25) | class MockWebSocket: method __init__ (line 28) | def __init__(self): method send_text (line 38) | async def send_text(self, message: str): method close (line 42) | async def close(self): method receive_text (line 49) | async def receive_text(self): method send (line 69) | def send(self, data): class MockSession (line 74) | class MockSession: method __init__ (line 77) | def __init__(self): function test_websocket_command_dispatcher_with_aip (line 87) | async def test_websocket_command_dispatcher_with_aip(): function test_command_dispatcher_error_handling (line 140) | async def test_command_dispatcher_error_handling(): function test_dispatcher_backward_compatibility (line 170) | async def test_dispatcher_backward_compatibility(): function test_set_result_with_aip (line 189) | async def test_set_result_with_aip(): FILE: tests/integration/test_device_info_flow.py class TestAgentProfileIntegration (line 25) | class TestAgentProfileIntegration: method test_device_registration_with_system_info (line 29) | async def test_device_registration_with_system_info(self): method test_constellation_request_device_info (line 83) | async def test_constellation_request_device_info(self): method test_request_device_info_not_found (line 136) | async def test_request_device_info_not_found(self): method test_device_info_with_server_config (line 166) | async def test_device_info_with_server_config(self): method test_multiple_devices_different_info (line 233) | async def test_multiple_devices_different_info(self): FILE: tests/integration/test_e2e_galaxy.py class MockDeviceManager (line 64) | class MockDeviceManager: method __init__ (line 67) | def __init__(self, connected_devices: Dict[str, Any]): method get_connected_devices (line 71) | def get_connected_devices(self) -> List[str]: method assign_task_to_device (line 79) | async def assign_task_to_device( class MockDeviceRegistry (line 104) | class MockDeviceRegistry: method __init__ (line 107) | def __init__(self, connected_devices: Dict[str, Any]): method get_device_info (line 110) | def get_device_info(self, device_id: str): class MockGalaxyConstellationClient (line 126) | class MockGalaxyConstellationClient: method __init__ (line 132) | def __init__(self): method get_connected_devices (line 216) | def get_connected_devices(self) -> List[str]: method get_device_status (line 224) | def get_device_status(self, device_id: str) -> Dict[str, Any]: method execute_task (line 228) | async def execute_task( class E2EConstellationTester (line 302) | class E2EConstellationTester: method __init__ (line 307) | def __init__(self): method create_mock_llm_responses (line 315) | def create_mock_llm_responses(self) -> Dict[str, str]: method test_dag_structure (line 404) | async def test_dag_structure( method _display_constellation_info (line 524) | def _display_constellation_info(self, constellation: TaskConstellation): method _analyze_device_utilization (line 557) | def _analyze_device_utilization(self) -> Dict[str, Any]: method _analyze_dag_characteristics (line 590) | def _analyze_dag_characteristics( method test_dag_modifications (line 640) | async def test_dag_modifications( method test_error_scenarios (line 747) | async def test_error_scenarios(self) -> Dict[str, Any]: method run_comprehensive_test_suite (line 858) | async def run_comprehensive_test_suite(self) -> Dict[str, Any]: method _generate_performance_summary (line 963) | def _generate_performance_summary( method _analyze_overall_device_performance (line 1019) | def _analyze_overall_device_performance(self) -> Dict[str, Any]: method _print_final_summary (line 1039) | def _print_final_summary(self, suite_results: Dict[str, Any]): class GalaxySessionTester (line 1096) | class GalaxySessionTester: method __init__ (line 1101) | def __init__(self): method test_galaxy_session_lifecycle (line 1104) | async def test_galaxy_session_lifecycle(self) -> Dict[str, Any]: method test_weaver_agent_scenarios (line 1251) | async def test_weaver_agent_scenarios(self) -> Dict[str, Any]: method test_session_agent_integration (line 1361) | async def test_session_agent_integration(self) -> Dict[str, Any]: method test_dynamic_dag_execution_flow (line 1462) | async def test_dynamic_dag_execution_flow(self) -> Dict[str, Any]: method run_galaxy_tests (line 1770) | async def run_galaxy_tests(self) -> Dict[str, Any]: function main (line 1826) | async def main(): FILE: tests/integration/test_e2e_simplified.py function print_with_color (line 35) | def print_with_color(message: str, color: str = "white"): function test_basic_constellation_workflow (line 53) | def test_basic_constellation_workflow(): function test_real_time_dag_updates (line 137) | def test_real_time_dag_updates(): function test_complex_dag_structure (line 196) | def test_complex_dag_structure(): function test_error_handling (line 266) | def test_error_handling(): function save_test_results (line 322) | def save_test_results(results: Dict[str, Any]): function main (line 333) | def main(): FILE: tests/integration/test_galaxy_state_machine_integration.py class IntegrationTestHelper (line 30) | class IntegrationTestHelper: method create_test_constellation (line 34) | def create_test_constellation() -> TaskConstellation: method create_mock_client (line 43) | def create_mock_client() -> ConstellationClient: method create_mock_orchestrator (line 50) | def create_mock_orchestrator() -> TaskConstellationOrchestrator: class TestGalaxyRoundStateMachineIntegration (line 58) | class TestGalaxyRoundStateMachineIntegration: method setup_method (line 61) | def setup_method(self): method test_round_state_machine_execution (line 72) | async def test_round_state_machine_execution(self): method test_round_state_transitions (line 97) | async def test_round_state_transitions(self): method test_round_handles_agent_failure (line 119) | async def test_round_handles_agent_failure(self): class TestObserverStateMachineIntegration (line 140) | class TestObserverStateMachineIntegration: method setup_method (line 143) | def setup_method(self): method test_task_event_forwarding_to_state_machine (line 164) | async def test_task_event_forwarding_to_state_machine(self): method test_task_lifecycle_event_sequence (line 192) | async def test_task_lifecycle_event_sequence(self): method test_observer_error_handling (line 230) | async def test_observer_error_handling(self): class TestEndToEndExecution (line 255) | class TestEndToEndExecution: method setup_method (line 258) | def setup_method(self): method test_complete_execution_flow (line 274) | async def test_complete_execution_flow(self): method test_race_condition_resolution (line 296) | async def test_race_condition_resolution(self): method test_concurrent_task_updates (line 344) | async def test_concurrent_task_updates(self): class TestErrorScenarios (line 373) | class TestErrorScenarios: method test_constellation_creation_failure_handling (line 377) | async def test_constellation_creation_failure_handling(self): method test_monitoring_state_with_no_constellation (line 396) | async def test_monitoring_state_with_no_constellation(self): method test_invalid_task_update_handling (line 412) | async def test_invalid_task_update_handling(self): FILE: tests/integration/test_mobile_mcp_server.py class TestMobileMCPServers (line 37) | class TestMobileMCPServers: method check_adb_connection (line 41) | def check_adb_connection(self): method mobile_agent_config (line 71) | def mobile_agent_config(self): method command_router (line 103) | async def command_router(self, mobile_agent_config): method test_data_collection_server (line 118) | async def test_data_collection_server(self, check_adb_connection, comm... method test_action_server (line 266) | async def test_action_server(self, check_adb_connection, command_router): method test_shared_state_between_servers (line 389) | async def test_shared_state_between_servers( method test_complete_workflow (line 459) | async def test_complete_workflow(self, check_adb_connection, command_r... FILE: tests/integration/test_mobile_mcp_standalone.py function find_adb (line 26) | def find_adb(): function check_adb_connection (line 55) | async def check_adb_connection() -> bool: function test_data_collection_server (line 91) | async def test_data_collection_server(): function test_action_server (line 188) | async def test_action_server(): function test_shared_state (line 267) | async def test_shared_state(): function main (line 332) | async def main(): FILE: tests/integration/test_presenter_integration.py class TestAgentPresenterIntegration (line 23) | class TestAgentPresenterIntegration(unittest.TestCase): method setUp (line 26) | def setUp(self): method test_basic_agent_has_presenter (line 35) | def test_basic_agent_has_presenter(self, mock_console_class): method test_app_agent_print_response (line 69) | def test_app_agent_print_response(self, mock_console_class): method test_host_agent_print_response (line 102) | def test_host_agent_print_response(self, mock_console_class): method test_constellation_agent_print_response (line 132) | def test_constellation_agent_print_response(self, mock_console_class): method test_list_action_command_info_color_print (line 157) | def test_list_action_command_info_color_print(self, mock_console_class): class TestPresenterOutputConsistency (line 191) | class TestPresenterOutputConsistency(unittest.TestCase): method test_status_styling_consistency (line 195) | def test_status_styling_consistency(self, mock_console_class): method test_constellation_operation_formatting (line 212) | def test_constellation_operation_formatting(self, mock_console_class): class TestPresenterFactoryConfig (line 247) | class TestPresenterFactoryConfig(unittest.TestCase): method test_default_presenter_type (line 250) | def test_default_presenter_type(self): method test_presenter_creation_with_config (line 265) | def test_presenter_creation_with_config(self): class TestBackwardCompatibility (line 271) | class TestBackwardCompatibility(unittest.TestCase): method test_app_agent_response_structure (line 275) | def test_app_agent_response_structure(self, mock_console_class): method test_host_agent_response_structure (line 298) | def test_host_agent_response_structure(self, mock_console_class): FILE: tests/integration/verify_mobile_setup.py function find_adb (line 14) | def find_adb(): function check_adb (line 45) | def check_adb(): function check_device (line 79) | def check_device(adb_path): function check_device_info (line 122) | def check_device_info(adb_path): function check_python_packages (line 170) | def check_python_packages(): function print_next_steps (line 193) | def print_next_steps(all_ok): function main (line 219) | def main(): FILE: tests/run_dag_tests.py function run_test (line 19) | def run_test(test_file: str, test_name: str) -> bool: function main (line 55) | def main(): FILE: tests/run_device_info_tests.py function run_tests (line 17) | def run_tests(): FILE: tests/run_galaxy_session_tests.py function run_test (line 17) | def run_test(test_file, description): function main (line 44) | def main(): FILE: tests/run_galaxy_state_machine_tests.py class GalaxyStateMachineTestRunner (line 36) | class GalaxyStateMachineTestRunner: method __init__ (line 39) | def __init__(self): method setup_logging (line 49) | def setup_logging(self): method run_all_tests (line 56) | async def run_all_tests(self) -> Dict[str, Any]: method test_state_manager (line 85) | async def test_state_manager(self): method test_state_transitions (line 113) | async def test_state_transitions(self): method test_monitoring_state_task_tracking (line 139) | async def test_monitoring_state_task_tracking(self): method test_observer_integration (line 183) | async def test_observer_integration(self): method test_complete_workflow (line 226) | async def test_complete_workflow(self): method test_race_condition_resolution (line 274) | async def test_race_condition_resolution(self): method test_error_handling (line 327) | async def test_error_handling(self): method test_concurrent_operations (line 360) | async def test_concurrent_operations(self): method _record_success (line 397) | def _record_success(self, test_name: str): method _record_failure (line 403) | def _record_failure(self, test_name: str, error: Exception): method generate_report (line 414) | def generate_report(self): function main (line 439) | async def main(): FILE: tests/run_galaxy_tests.py function run_test_suite (line 17) | def run_test_suite(): function run_specific_test_scenarios (line 118) | def run_specific_test_scenarios(): function check_test_coverage (line 187) | def check_test_coverage(): function main (line 231) | def main(): FILE: tests/run_sync_tests.py function run_tests (line 16) | def run_tests(): FILE: tests/test_agents_config_migration.py function test_system_config_fields (line 21) | def test_system_config_fields(): function test_rag_config_fields (line 129) | def test_rag_config_fields(): function test_agent_config_fields (line 182) | def test_agent_config_fields(): function main (line 277) | def main(): FILE: tests/test_base_constellation_prompter.py class TestBaseConstellationPrompter (line 30) | class TestBaseConstellationPrompter: method setup_method (line 33) | def setup_method(self): method test_format_device_info_empty (line 42) | def test_format_device_info_empty(self): method test_format_device_info_single_device (line 47) | def test_format_device_info_single_device(self): method test_format_device_info_multiple_devices (line 68) | def test_format_device_info_multiple_devices(self): method test_format_constellation_none (line 94) | def test_format_constellation_none(self): method test_format_constellation_basic (line 99) | def test_format_constellation_basic(self): method test_format_constellation_with_completed_task (line 156) | def test_format_constellation_with_completed_task(self): method test_format_constellation_with_failed_task (line 193) | def test_format_constellation_with_failed_task(self): method test_format_constellation_complex_dependencies (line 222) | def test_format_constellation_complex_dependencies(self): method test_format_constellation_exception_handling (line 268) | def test_format_constellation_exception_handling(self): method test_format_constellation_empty_tasks_and_dependencies (line 279) | def test_format_constellation_empty_tasks_and_dependencies(self): FILE: tests/test_color_fix.py class MockConstellation (line 17) | class MockConstellation: method __init__ (line 18) | def __init__(self): method get_statistics (line 23) | def get_statistics(self): function test_color_display (line 34) | def test_color_display(): FILE: tests/test_constellation_continuation.py class MockGalaxyWeaverAgent (line 12) | class MockGalaxyWeaverAgent: method __init__ (line 15) | def __init__(self): method current_constellation (line 22) | def current_constellation(self): method current_constellation (line 26) | def current_constellation(self, value): method update_constellation_with_lock (line 29) | async def update_constellation_with_lock(self, task_result, context=No... method should_continue (line 33) | async def should_continue(self, constellation, context=None): method _add_new_tasks (line 46) | async def _add_new_tasks(self): class TestConstellationContinuation (line 54) | class TestConstellationContinuation: method test_continuation_after_completion (line 58) | async def test_continuation_after_completion(self): method test_constellation_continuation_with_new_tasks (line 90) | async def test_constellation_continuation_with_new_tasks(self): function run_tests (line 150) | async def run_tests(): FILE: tests/test_constellation_manager.py class MockDeviceManager (line 24) | class MockDeviceManager: method __init__ (line 27) | def __init__(self): method get_connected_devices (line 31) | def get_connected_devices(self): class MockAgentProfile (line 35) | class MockAgentProfile: method __init__ (line 38) | def __init__(self, device_id: str, device_type: str = "desktop"): class TestConstellationManager (line 45) | class TestConstellationManager: method mock_device_manager (line 49) | def mock_device_manager(self): method manager (line 63) | def manager(self, mock_device_manager): method manager_no_device (line 68) | def manager_no_device(self): method sample_constellation (line 73) | def sample_constellation(self): method test_init_with_device_manager (line 88) | def test_init_with_device_manager(self, mock_device_manager): method test_init_without_device_manager (line 95) | def test_init_without_device_manager(self): method test_set_device_manager (line 102) | def test_set_device_manager(self, manager_no_device, mock_device_manag... method test_register_constellation (line 108) | def test_register_constellation(self, manager, sample_constellation): method test_register_constellation_without_metadata (line 121) | def test_register_constellation_without_metadata( method test_unregister_constellation (line 130) | def test_unregister_constellation(self, manager, sample_constellation): method test_unregister_nonexistent_constellation (line 142) | def test_unregister_nonexistent_constellation(self, manager): method test_get_constellation (line 148) | def test_get_constellation(self, manager, sample_constellation): method test_get_nonexistent_constellation (line 156) | def test_get_nonexistent_constellation(self, manager): method test_list_constellations (line 162) | def test_list_constellations(self, manager, sample_constellation): method test_list_constellations_empty (line 178) | def test_list_constellations_empty(self, manager): method test_assign_devices_round_robin (line 185) | async def test_assign_devices_round_robin(self, manager, sample_conste... method test_assign_devices_capability_match (line 201) | async def test_assign_devices_capability_match(self, manager, sample_c... method test_assign_devices_load_balance (line 219) | async def test_assign_devices_load_balance(self, manager, sample_const... method test_assign_devices_with_preferences (line 231) | async def test_assign_devices_with_preferences(self, manager, sample_c... method test_assign_devices_invalid_strategy (line 244) | async def test_assign_devices_invalid_strategy(self, manager, sample_c... method test_assign_devices_no_device_manager (line 252) | async def test_assign_devices_no_device_manager( method test_assign_devices_no_available_devices (line 260) | async def test_assign_devices_no_available_devices( method test_get_constellation_status (line 271) | async def test_get_constellation_status(self, manager, sample_constell... method test_get_constellation_status_nonexistent (line 288) | async def test_get_constellation_status_nonexistent(self, manager): method test_get_available_devices (line 295) | async def test_get_available_devices(self, manager): method test_get_available_devices_no_manager (line 308) | async def test_get_available_devices_no_manager(self, manager_no_device): method test_validate_constellation_assignments_valid (line 314) | def test_validate_constellation_assignments_valid( method test_validate_constellation_assignments_invalid (line 329) | def test_validate_constellation_assignments_invalid( method test_get_task_device_info (line 347) | def test_get_task_device_info(self, manager, sample_constellation): method test_get_task_device_info_no_assignment (line 359) | def test_get_task_device_info_no_assignment(self, manager, sample_cons... method test_get_task_device_info_nonexistent_task (line 365) | def test_get_task_device_info_nonexistent_task(self, manager, sample_c... method test_reassign_task_device (line 373) | def test_reassign_task_device(self, manager, sample_constellation): method test_reassign_nonexistent_task (line 383) | def test_reassign_nonexistent_task(self, manager, sample_constellation): method test_clear_device_assignments (line 391) | def test_clear_device_assignments(self, manager, sample_constellation): method test_clear_device_assignments_none_assigned (line 403) | def test_clear_device_assignments_none_assigned( method test_get_device_utilization (line 411) | def test_get_device_utilization(self, manager, sample_constellation): method test_get_device_utilization_no_assignments (line 424) | def test_get_device_utilization_no_assignments(self, manager, sample_c... method test_assign_devices_with_device_manager_error (line 431) | async def test_assign_devices_with_device_manager_error( class TestConstellationManagerIntegration (line 444) | class TestConstellationManagerIntegration: method mock_device_manager (line 448) | def mock_device_manager(self): method manager (line 461) | def manager(self, mock_device_manager): method test_full_constellation_lifecycle (line 466) | async def test_full_constellation_lifecycle(self, manager): method test_multiple_constellations_management (line 511) | async def test_multiple_constellations_management(self, manager): method test_device_assignment_strategies_comparison (line 552) | async def test_device_assignment_strategies_comparison(self, manager): FILE: tests/test_constellation_observer_logger.py class TestConstellationObserverLogger (line 23) | class TestConstellationObserverLogger: method task_event (line 27) | def task_event(self): method mock_orchestrator (line 41) | def mock_orchestrator(self): method constellation_agent (line 49) | def constellation_agent(self, mock_orchestrator): method observer (line 59) | def observer(self, constellation_agent): method test_observer_calls_agent_add_task_completion_event (line 64) | async def test_observer_calls_agent_add_task_completion_event( method test_direct_agent_add_task_completion_event_logging (line 129) | async def test_direct_agent_add_task_completion_event_logging( method test_logger_configuration_comparison (line 175) | async def test_logger_configuration_comparison( FILE: tests/test_constellation_parser.py class TestConstellationParser (line 22) | class TestConstellationParser: method parser (line 26) | def parser(self): method sample_task_descriptions (line 31) | def sample_task_descriptions(self): method sample_llm_output (line 42) | def sample_llm_output(self): method sample_constellation_json (line 62) | def sample_constellation_json(self): method test_create_from_llm (line 92) | async def test_create_from_llm(self, parser, sample_llm_output): method test_create_from_json (line 107) | async def test_create_from_json(self, parser, sample_constellation_json): method test_create_simple_sequential (line 121) | async def test_create_simple_sequential(self, parser, sample_task_desc... method test_create_simple_parallel (line 141) | async def test_create_simple_parallel(self, parser, sample_task_descri... method test_update_from_llm (line 159) | async def test_update_from_llm(self, parser): method test_add_task_to_constellation (line 180) | def test_add_task_to_constellation(self, parser): method test_remove_task_from_constellation (line 199) | def test_remove_task_from_constellation(self, parser): method test_remove_nonexistent_task (line 219) | def test_remove_nonexistent_task(self, parser): method test_validate_constellation_valid (line 228) | def test_validate_constellation_valid(self, parser): method test_validate_constellation_empty (line 243) | def test_validate_constellation_empty(self, parser): method test_export_constellation_json (line 253) | def test_export_constellation_json(self, parser): method test_export_constellation_llm (line 269) | def test_export_constellation_llm(self, parser): method test_export_constellation_yaml (line 283) | def test_export_constellation_yaml(self, parser): method test_export_constellation_unsupported_format (line 297) | def test_export_constellation_unsupported_format(self, parser): method test_clone_constellation (line 304) | def test_clone_constellation(self, parser): method test_clone_constellation_default_name (line 323) | def test_clone_constellation_default_name(self, parser): method test_merge_constellations (line 331) | def test_merge_constellations(self, parser): method test_merge_constellations_default_name (line 354) | def test_merge_constellations_default_name(self, parser): method test_merge_constellations_with_conflicts (line 363) | def test_merge_constellations_with_conflicts(self, parser): method test_create_from_empty_llm_output (line 383) | async def test_create_from_empty_llm_output(self, parser): method test_create_from_invalid_json (line 394) | async def test_create_from_invalid_json(self, parser): method test_add_task_with_invalid_dependencies (line 401) | def test_add_task_with_invalid_dependencies(self, parser): method test_parser_with_logging_enabled (line 416) | async def test_parser_with_logging_enabled(self): method test_update_from_llm_with_empty_request (line 428) | async def test_update_from_llm_with_empty_request(self, parser): method test_validate_constellation_with_cycles (line 438) | def test_validate_constellation_with_cycles(self, parser): class TestConstellationParserIntegration (line 456) | class TestConstellationParserIntegration: method parser (line 460) | def parser(self): method test_end_to_end_workflow (line 465) | async def test_end_to_end_workflow(self, parser): method test_complex_constellation_operations (line 492) | async def test_complex_constellation_operations(self, parser): FILE: tests/test_constellation_parser_refactored.py class TestConstellationParserRefactored (line 19) | class TestConstellationParserRefactored: method parser (line 23) | def parser(self): method sample_json_data (line 28) | def sample_json_data(self): method test_parser_uses_serializer_for_json_creation (line 47) | def test_parser_uses_serializer_for_json_creation(self, parser, sample... method test_parser_uses_updater_for_llm_updates (line 65) | def test_parser_uses_updater_for_llm_updates(self, parser): method test_parser_uses_updater_for_task_addition (line 76) | def test_parser_uses_updater_for_task_addition(self, parser): method test_parser_uses_updater_for_task_removal (line 93) | def test_parser_uses_updater_for_task_removal(self, parser): method test_parser_uses_serializer_for_export (line 110) | def test_parser_uses_serializer_for_export(self, parser): method test_parser_uses_serializer_for_cloning (line 122) | def test_parser_uses_serializer_for_cloning(self, parser): method test_json_normalization_with_list_dependencies (line 142) | def test_json_normalization_with_list_dependencies(self, parser): method test_constellation_name_override (line 155) | def test_constellation_name_override(self, parser, sample_json_data): method test_error_handling_invalid_json (line 163) | def test_error_handling_invalid_json(self, parser): method test_create_simple_sequential_delegation (line 168) | def test_create_simple_sequential_delegation(self, parser): method test_create_simple_parallel_delegation (line 178) | def test_create_simple_parallel_delegation(self, parser): method test_parser_initialization (line 188) | def test_parser_initialization(self): method test_parser_initialization_no_logging (line 196) | def test_parser_initialization_no_logging(self): method test_export_format_validation (line 203) | def test_export_format_validation(self, parser): method test_export_llm_format (line 210) | def test_export_llm_format(self, parser): method test_task_addition_error_handling (line 220) | def test_task_addition_error_handling(self, parser): method test_task_removal_nonexistent_task (line 233) | def test_task_removal_nonexistent_task(self, parser): method test_integration_create_and_update (line 241) | def test_integration_create_and_update(self, parser): FILE: tests/test_constellation_serializer.py class TestConstellationSerializer (line 21) | class TestConstellationSerializer: method test_to_dict_basic (line 24) | def test_to_dict_basic(self): method test_from_dict_basic (line 43) | def test_from_dict_basic(self): method test_to_json_and_from_json (line 75) | def test_to_json_and_from_json(self): method test_normalize_json_data_dependencies_list (line 104) | def test_normalize_json_data_dependencies_list(self): method test_normalize_json_data_dependencies_dict (line 127) | def test_normalize_json_data_dependencies_dict(self): method test_serialization_with_timestamps (line 141) | def test_serialization_with_timestamps(self): method test_serialization_with_metadata (line 156) | def test_serialization_with_metadata(self): method test_empty_constellation_serialization (line 169) | def test_empty_constellation_serialization(self): method test_json_serialization_invalid_input (line 181) | def test_json_serialization_invalid_input(self): method test_dict_serialization_missing_fields (line 186) | def test_dict_serialization_missing_fields(self): FILE: tests/test_constellation_sync_integration.py function event_bus (line 36) | def event_bus(): function mock_device_manager (line 42) | def mock_device_manager(): function orchestrator (line 51) | def orchestrator(mock_device_manager): function synchronizer (line 61) | def synchronizer(orchestrator): function simple_constellation (line 73) | def simple_constellation(): class MockAgent (line 109) | class MockAgent: method __init__ (line 112) | def __init__(self, event_bus, modify_delay: float = 0.1): method on_task_completion (line 118) | async def on_task_completion(self, event: TaskEvent): class TestBasicIntegration (line 148) | class TestBasicIntegration: method test_synchronizer_attached_to_orchestrator (line 152) | async def test_synchronizer_attached_to_orchestrator(self, orchestrato... method test_event_flow_with_synchronizer (line 157) | async def test_event_flow_with_synchronizer(self, event_bus, synchroni... class TestRaceConditionPrevention (line 198) | class TestRaceConditionPrevention: method test_orchestrator_waits_for_agent_modification (line 202) | async def test_orchestrator_waits_for_agent_modification( method test_multiple_concurrent_modifications (line 279) | async def test_multiple_concurrent_modifications(self, event_bus, sync... class TestTimeoutScenarios (line 341) | class TestTimeoutScenarios: method test_orchestrator_proceeds_on_agent_timeout (line 345) | async def test_orchestrator_proceeds_on_agent_timeout( class TestComplexDAGScenarios (line 373) | class TestComplexDAGScenarios: method test_sequential_dag_execution_with_modifications (line 377) | async def test_sequential_dag_execution_with_modifications( class TestErrorRecoveryIntegration (line 443) | class TestErrorRecoveryIntegration: method test_task_failure_with_modification (line 447) | async def test_task_failure_with_modification(self, event_bus, synchro... class TestPerformanceCharacteristics (line 495) | class TestPerformanceCharacteristics: method test_synchronization_overhead (line 499) | async def test_synchronization_overhead(self, event_bus, synchronizer): FILE: tests/test_constellation_sync_observer.py function create_task_event (line 41) | def create_task_event( function create_constellation_event (line 59) | def create_constellation_event( function mock_orchestrator (line 76) | def mock_orchestrator(): function synchronizer (line 84) | def synchronizer(mock_orchestrator): function task_completed_event (line 94) | def task_completed_event(): function constellation_modified_event (line 104) | def constellation_modified_event(): class TestBasicSynchronization (line 113) | class TestBasicSynchronization: method test_register_pending_modification (line 117) | async def test_register_pending_modification( method test_complete_modification (line 130) | async def test_complete_modification( method test_wait_for_single_modification (line 146) | async def test_wait_for_single_modification( method test_wait_with_no_pending_modifications (line 169) | async def test_wait_with_no_pending_modifications(self, synchronizer): class TestRaceConditionPrevention (line 176) | class TestRaceConditionPrevention: method test_orchestrator_waits_for_modification (line 180) | async def test_orchestrator_waits_for_modification(self, synchronizer): method test_multiple_tasks_concurrent (line 228) | async def test_multiple_tasks_concurrent(self, synchronizer): class TestTimeoutHandling (line 277) | class TestTimeoutHandling: method test_modification_timeout (line 281) | async def test_modification_timeout(self, synchronizer): method test_auto_complete_on_timeout (line 310) | async def test_auto_complete_on_timeout(self, synchronizer): class TestErrorRecovery (line 333) | class TestErrorRecovery: method test_clear_pending_modifications (line 337) | async def test_clear_pending_modifications(self, synchronizer): method test_handle_missing_constellation_id (line 361) | async def test_handle_missing_constellation_id(self, synchronizer): method test_handle_missing_task_id (line 380) | async def test_handle_missing_task_id(self, synchronizer): method test_handle_duplicate_task_completion (line 410) | async def test_handle_duplicate_task_completion(self, synchronizer): class TestStatistics (line 429) | class TestStatistics: method test_statistics_tracking (line 433) | async def test_statistics_tracking(self, synchronizer): class TestEdgeCases (line 466) | class TestEdgeCases: method test_ignore_non_completion_events (line 470) | async def test_ignore_non_completion_events(self, synchronizer): method test_modification_complete_before_wait (line 488) | async def test_modification_complete_before_wait(self, synchronizer): method test_set_invalid_timeout (line 516) | async def test_set_invalid_timeout(self, synchronizer): method test_task_failed_event (line 525) | async def test_task_failed_event(self, synchronizer): class TestIntegrationScenarios (line 546) | class TestIntegrationScenarios: method test_sequential_task_execution (line 550) | async def test_sequential_task_execution(self, synchronizer): method test_parallel_task_execution (line 594) | async def test_parallel_task_execution(self, synchronizer): FILE: tests/test_constellation_sync_observer_simple.py function create_task_event (line 39) | def create_task_event( function create_constellation_event (line 56) | def create_constellation_event( function mock_orchestrator (line 72) | def mock_orchestrator(): function synchronizer (line 80) | def synchronizer(mock_orchestrator): class TestBasicSynchronization (line 89) | class TestBasicSynchronization: method test_register_pending_modification (line 93) | async def test_register_pending_modification(self, synchronizer): method test_complete_modification (line 103) | async def test_complete_modification(self, synchronizer): method test_wait_for_single_modification (line 119) | async def test_wait_for_single_modification(self, synchronizer): method test_wait_with_no_pending_modifications (line 142) | async def test_wait_with_no_pending_modifications(self, synchronizer): class TestRaceConditionPrevention (line 148) | class TestRaceConditionPrevention: method test_orchestrator_waits_for_modification (line 152) | async def test_orchestrator_waits_for_modification(self, synchronizer): method test_multiple_tasks_concurrent (line 186) | async def test_multiple_tasks_concurrent(self, synchronizer): class TestTimeoutHandling (line 221) | class TestTimeoutHandling: method test_modification_timeout (line 225) | async def test_modification_timeout(self, synchronizer): method test_auto_complete_on_timeout (line 243) | async def test_auto_complete_on_timeout(self, synchronizer): class TestErrorRecovery (line 259) | class TestErrorRecovery: method test_clear_pending_modifications (line 263) | async def test_clear_pending_modifications(self, synchronizer): method test_handle_missing_constellation_id (line 280) | async def test_handle_missing_constellation_id(self, synchronizer): method test_task_failed_event (line 299) | async def test_task_failed_event(self, synchronizer): class TestStatistics (line 314) | class TestStatistics: method test_statistics_tracking (line 318) | async def test_statistics_tracking(self, synchronizer): class TestEdgeCases (line 336) | class TestEdgeCases: method test_ignore_non_completion_events (line 340) | async def test_ignore_non_completion_events(self, synchronizer): method test_set_invalid_timeout (line 355) | async def test_set_invalid_timeout(self, synchronizer): FILE: tests/test_constellation_update_lock.py class TestConstellationUpdateLock (line 22) | class TestConstellationUpdateLock: method constellation (line 26) | def constellation(self): method sample_tasks (line 36) | def sample_tasks(self): method test_update_lock_exists (line 58) | def test_update_lock_exists(self, constellation): method test_lock_basic_functionality (line 64) | async def test_lock_basic_functionality(self, constellation): method test_lock_context_manager (line 75) | async def test_lock_context_manager(self, constellation): method test_concurrent_access_blocked (line 85) | async def test_concurrent_access_blocked(self, constellation, sample_t... method test_race_condition_scenario (line 148) | async def test_race_condition_scenario(self, constellation, sample_tas... method test_multiple_concurrent_readers_blocked (line 241) | async def test_multiple_concurrent_readers_blocked(self, constellation): method test_lock_prevents_stale_ready_tasks (line 278) | async def test_lock_prevents_stale_ready_tasks(self, constellation, sa... class TestLockPerformance (line 329) | class TestLockPerformance: method test_lock_overhead (line 333) | async def test_lock_overhead(self): method test_no_deadlock_with_nested_operations (line 357) | async def test_no_deadlock_with_nested_operations(self): FILE: tests/test_constellation_updater.py class TestConstellationUpdater (line 15) | class TestConstellationUpdater: method updater (line 19) | def updater(self): method sample_constellation (line 24) | def sample_constellation(self): method test_add_tasks (line 35) | def test_add_tasks(self, updater, sample_constellation): method test_remove_tasks (line 51) | def test_remove_tasks(self, updater, sample_constellation): method test_remove_tasks_with_dependencies (line 61) | def test_remove_tasks_with_dependencies(self, updater, sample_constell... method test_add_dependencies (line 75) | def test_add_dependencies(self, updater, sample_constellation): method test_add_dependencies_invalid_tasks (line 94) | def test_add_dependencies_invalid_tasks(self, updater, sample_constell... method test_update_from_llm_output_add_task (line 109) | def test_update_from_llm_output_add_task(self, updater, sample_constel... method test_update_from_llm_output_remove_task (line 120) | def test_update_from_llm_output_remove_task(self, updater, sample_cons... method test_update_from_llm_output_add_dependency (line 133) | def test_update_from_llm_output_add_dependency(self, updater, sample_c... method test_parse_llm_update_instructions (line 143) | def test_parse_llm_update_instructions(self, updater): method test_parse_dependency_spec (line 161) | def test_parse_dependency_spec(self, updater): method test_parse_dependency_spec_invalid (line 169) | def test_parse_dependency_spec_invalid(self, updater): method test_create_dependency_from_spec (line 174) | def test_create_dependency_from_spec(self, updater, sample_constellati... method test_create_dependency_from_spec_invalid (line 188) | def test_create_dependency_from_spec_invalid(self, updater, sample_con... method test_remove_task_dependencies (line 195) | def test_remove_task_dependencies(self, updater, sample_constellation): method test_updater_with_logger (line 217) | def test_updater_with_logger(self): method test_preserve_existing_tasks (line 228) | def test_preserve_existing_tasks(self, updater, sample_constellation): method test_alternative_dependency_spec_format (line 239) | def test_alternative_dependency_spec_format(self, updater, sample_cons... FILE: tests/test_convert_config.py class TestConfigConversion (line 29) | class TestConfigConversion(unittest.TestCase): method setUpClass (line 33) | def setUpClass(cls): method test_legacy_config_exists (line 39) | def test_legacy_config_exists(self): method test_field_mapping_completeness (line 52) | def test_field_mapping_completeness(self): method test_yaml_format_conversion (line 79) | def test_yaml_format_conversion(self): method test_config_splitting (line 119) | def test_config_splitting(self): method test_value_preservation (line 153) | def test_value_preservation(self): method test_config_loader_compatibility (line 181) | def test_config_loader_compatibility(self): method test_mcp_config_conversion (line 216) | def test_mcp_config_conversion(self): method test_prices_config_conversion (line 236) | def test_prices_config_conversion(self): method test_dry_run_no_files_created (line 256) | def test_dry_run_no_files_created(self): class TestConfigValueEquivalence (line 277) | class TestConfigValueEquivalence(unittest.TestCase): method setUpClass (line 281) | def setUpClass(cls): method test_legacy_vs_converted_equivalence (line 286) | def test_legacy_vs_converted_equivalence(self): function run_tests (line 326) | def run_tests(): FILE: tests/test_dag_visualization_observer_events.py function create_test_constellation (line 41) | def create_test_constellation(): function create_constellation_event (line 85) | def create_constellation_event( function create_task_event (line 106) | def create_task_event( function test_observer_initialization (line 120) | async def test_observer_initialization(): function test_constellation_events (line 145) | async def test_constellation_events(): function test_task_events (line 256) | async def test_task_events(): function test_observer_state_management (line 337) | async def test_observer_state_management(): function test_error_handling (line 369) | async def test_error_handling(): function test_visualization_output_quality (line 406) | async def test_visualization_output_quality(): function run_all_tests (line 468) | async def run_all_tests(): FILE: tests/test_enhanced_continuation.py class EnhancedMockGalaxyWeaverAgent (line 12) | class EnhancedMockGalaxyWeaverAgent: method __init__ (line 15) | def __init__(self): method current_constellation (line 24) | def current_constellation(self): method current_constellation (line 28) | def current_constellation(self, value): method update_constellation_with_lock (line 31) | async def update_constellation_with_lock(self, task_result, context=No... method should_continue (line 34) | async def should_continue(self, constellation, context=None): method handle_continuation (line 44) | async def handle_continuation(self, context=None): class TestEnhancedConstellationContinuation (line 60) | class TestEnhancedConstellationContinuation: method test_continuation_with_handle_continuation (line 64) | async def test_continuation_with_handle_continuation(self): method test_multiple_continuation_cycles (line 106) | async def test_multiple_continuation_cycles(self): function run_tests (line 144) | async def run_tests(): FILE: tests/test_galaxy_client_log_collection_session.py class TestGalaxyClientLogCollectionSession (line 24) | class TestGalaxyClientLogCollectionSession: method mock_linux_server_1 (line 28) | def mock_linux_server_1(self) -> AgentProfile: method mock_linux_server_2 (line 61) | def mock_linux_server_2(self) -> AgentProfile: method mock_windows_workstation (line 95) | def mock_windows_workstation(self) -> AgentProfile: method mock_constellation_config (line 130) | def mock_constellation_config( method mock_constellation_client (line 173) | def mock_constellation_client( method mock_galaxy_session (line 210) | def mock_galaxy_session(self): method temp_output_dir (line 248) | def temp_output_dir(self): method test_galaxy_client_initialization_with_mock_devices (line 254) | async def test_galaxy_client_initialization_with_mock_devices( method test_galaxy_client_full_initialization (line 285) | async def test_galaxy_client_full_initialization( method test_process_log_collection_request (line 318) | async def test_process_log_collection_request( method test_galaxy_client_device_availability_check (line 385) | async def test_galaxy_client_device_availability_check( method test_galaxy_client_error_handling (line 438) | async def test_galaxy_client_error_handling( method test_galaxy_client_shutdown (line 479) | async def test_galaxy_client_shutdown( method test_galaxy_client_session_name_generation (line 510) | def test_galaxy_client_session_name_generation(self): method test_request_without_initialization_error (line 522) | async def test_request_without_initialization_error(self): method test_log_collection_request_scenarios (line 529) | def test_log_collection_request_scenarios(self): FILE: tests/test_galaxy_framework_summary.py function test_refactoring_completion (line 16) | def test_refactoring_completion(): FILE: tests/test_galaxy_session_proper_mock.py function setup_minimal_config (line 29) | def setup_minimal_config(): class MockConstellationClient (line 51) | class MockConstellationClient: method __init__ (line 54) | def __init__(self): class MockTaskConstellationOrchestrator (line 59) | class MockTaskConstellationOrchestrator: method __init__ (line 62) | def __init__(self, device_manager=None, enable_logging=True): method execute_constellation (line 67) | async def execute_constellation(self, constellation): class MockProcessor (line 75) | class MockProcessor: method __init__ (line 78) | def __init__(self, agent, global_context): method process (line 84) | async def process(self): function test_galaxy_session_with_proper_mocks (line 112) | async def test_galaxy_session_with_proper_mocks(): function test_agent_mocking_specifically (line 220) | async def test_agent_mocking_specifically(): function test_event_system_with_mocks (line 272) | async def test_event_system_with_mocks(): function main (line 317) | async def main(): FILE: tests/test_linux_log_collection_excel_generation.py class TestLinuxLogCollectionExcelGeneration (line 22) | class TestLinuxLogCollectionExcelGeneration: method mock_linux_server_1 (line 26) | def mock_linux_server_1(self) -> AgentProfile: method mock_linux_server_2 (line 62) | def mock_linux_server_2(self) -> AgentProfile: method mock_windows_workstation (line 99) | def mock_windows_workstation(self) -> AgentProfile: method device_constellation (line 138) | def device_constellation( method test_mock_device_creation (line 151) | def test_mock_device_creation( method test_device_capabilities_for_log_collection_scenario (line 179) | def test_device_capabilities_for_log_collection_scenario( method test_mock_log_collection_from_linux_servers (line 210) | async def test_mock_log_collection_from_linux_servers( method test_mock_excel_generation_on_windows (line 260) | async def test_mock_excel_generation_on_windows( method test_complete_log_collection_and_excel_workflow (line 336) | async def test_complete_log_collection_and_excel_workflow( method test_device_metadata_validation (line 406) | def test_device_metadata_validation( method test_error_handling_scenarios (line 432) | async def test_error_handling_scenarios( method test_device_formatting_for_prompt (line 482) | def test_device_formatting_for_prompt( method test_request_english_translation (line 526) | def test_request_english_translation(self): FILE: tests/test_logger_namespace_issue.py class TestLoggerNamespaceIssue (line 22) | class TestLoggerNamespaceIssue: method task_event (line 26) | def task_event(self): method mock_orchestrator (line 40) | def mock_orchestrator(self): method test_logger_namespace_issue_simulation (line 48) | async def test_logger_namespace_issue_simulation( method test_fix_by_configuring_agent_logger (line 121) | async def test_fix_by_configuring_agent_logger( method test_suggest_minimal_fix (line 196) | def test_suggest_minimal_fix(self): FILE: tests/test_misc_config_migration.py class TestMiscConfigMigration (line 17) | class TestMiscConfigMigration: method setup_class (line 21) | def setup_class(cls): method test_prompter_enabled_third_party_agents (line 26) | def test_prompter_enabled_third_party_agents(self): method test_prompter_third_party_agent_config (line 34) | def test_prompter_third_party_agent_config(self): method test_prompter_action_sequence (line 42) | def test_prompter_action_sequence(self): method test_prompter_eva_all_screenshots (line 50) | def test_prompter_eva_all_screenshots(self): method test_prompter_evaluation_prompt (line 58) | def test_prompter_evaluation_prompt(self): method test_automator_after_click_wait (line 66) | def test_automator_after_click_wait(self): method test_automator_click_api (line 74) | def test_automator_click_api(self): method test_automator_input_text_inter_key_pause (line 80) | def test_automator_input_text_inter_key_pause(self): method test_automator_input_text_api (line 88) | def test_automator_input_text_api(self): method test_automator_input_text_enter (line 96) | def test_automator_input_text_enter(self): method test_automator_default_png_compress_level (line 104) | def test_automator_default_png_compress_level(self): method test_automator_annotation_colors (line 112) | def test_automator_annotation_colors(self): method test_automator_annotation_font_size (line 120) | def test_automator_annotation_font_size(self): method test_experience_visual_mode (line 128) | def test_experience_visual_mode(self): method test_experience_prompt (line 136) | def test_experience_prompt(self): method test_experience_appagent_example_prompt (line 144) | def test_experience_appagent_example_prompt(self): method test_experience_api_prompt (line 152) | def test_experience_api_prompt(self): method test_rag_bing_api_key (line 160) | def test_rag_bing_api_key(self): method test_attribute_error_prevention (line 168) | def test_attribute_error_prevention(self): method test_attribute_access_methods (line 217) | def test_attribute_access_methods(self): FILE: tests/test_old_handlers_simple.py function create_test_constellation (line 34) | def create_test_constellation(): function test_all_event_types (line 65) | async def test_all_event_types(): FILE: tests/test_orchestrator_refactored.py class MockConstellationDeviceManager (line 24) | class MockConstellationDeviceManager: method __init__ (line 27) | def __init__(self): method get_connected_devices (line 31) | def get_connected_devices(self): class MockAgentProfile (line 35) | class MockAgentProfile: method __init__ (line 38) | def __init__(self, device_id: str): class TestTaskConstellationOrchestrator (line 45) | class TestTaskConstellationOrchestrator: method mock_device_manager (line 49) | def mock_device_manager(self): method mock_event_bus (line 62) | def mock_event_bus(self): method orchestrator (line 69) | def orchestrator(self, mock_device_manager, mock_event_bus): method orchestrator_no_device (line 78) | def orchestrator_no_device(self, mock_event_bus): method sample_tasks (line 85) | def sample_tasks(self): method test_init_with_device_manager (line 89) | def test_init_with_device_manager(self, mock_device_manager, mock_even... method test_init_without_device_manager (line 101) | def test_init_without_device_manager(self, mock_event_bus): method test_set_device_manager (line 110) | def test_set_device_manager(self, orchestrator_no_device, mock_device_... method test_create_constellation_from_llm (line 121) | async def test_create_constellation_from_llm(self, orchestrator): method test_create_constellation_from_json (line 142) | async def test_create_constellation_from_json(self, orchestrator): method test_create_simple_constellation_sequential (line 160) | async def test_create_simple_constellation_sequential( method test_create_simple_constellation_parallel (line 174) | async def test_create_simple_constellation_parallel( method test_orchestrate_constellation_no_device_manager (line 188) | async def test_orchestrate_constellation_no_device_manager( method test_orchestrate_constellation_invalid_dag (line 198) | async def test_orchestrate_constellation_invalid_dag(self, orchestrator): method test_orchestrate_constellation_assignment_validation_failed (line 208) | async def test_orchestrate_constellation_assignment_validation_failed( method test_orchestrate_constellation_with_manual_assignments (line 225) | async def test_orchestrate_constellation_with_manual_assignments( method test_execute_single_task (line 252) | async def test_execute_single_task(self, orchestrator): method test_execute_single_task_auto_assign (line 268) | async def test_execute_single_task_auto_assign(self, orchestrator): method test_execute_single_task_no_devices (line 283) | async def test_execute_single_task_no_devices(self, orchestrator): method test_modify_constellation_with_llm (line 294) | async def test_modify_constellation_with_llm(self, orchestrator): method test_get_constellation_status (line 311) | async def test_get_constellation_status(self, orchestrator): method test_get_available_devices (line 327) | async def test_get_available_devices(self, orchestrator): method test_assign_devices_automatically (line 335) | async def test_assign_devices_automatically(self, orchestrator): method test_assign_devices_with_preferences (line 353) | async def test_assign_devices_with_preferences(self, orchestrator): method test_export_constellation (line 367) | def test_export_constellation(self, orchestrator): method test_import_constellation_json (line 384) | async def test_import_constellation_json(self, orchestrator): method test_import_constellation_llm (line 403) | async def test_import_constellation_llm(self, orchestrator): method test_import_constellation_unsupported_format (line 415) | async def test_import_constellation_unsupported_format(self, orchestra... method test_add_task_to_constellation (line 420) | def test_add_task_to_constellation(self, orchestrator): method test_remove_task_from_constellation (line 434) | def test_remove_task_from_constellation(self, orchestrator): method test_clone_constellation (line 449) | def test_clone_constellation(self, orchestrator): method test_merge_constellations (line 462) | def test_merge_constellations(self, orchestrator): class TestTaskConstellationOrchestratorIntegration (line 483) | class TestTaskConstellationOrchestratorIntegration: method mock_device_manager (line 487) | def mock_device_manager(self): method orchestrator (line 500) | def orchestrator(self, mock_device_manager): method test_end_to_end_constellation_workflow (line 507) | async def test_end_to_end_constellation_workflow(self, orchestrator): method test_complex_constellation_operations (line 535) | async def test_complex_constellation_operations(self, orchestrator): method test_orchestration_with_task_execution_mock (line 584) | async def test_orchestration_with_task_execution_mock(self, orchestrat... method test_error_handling_in_orchestration (line 603) | async def test_error_handling_in_orchestration(self, orchestrator): FILE: tests/test_prompt_sanitizer.py class TestSanitizeUserInputBasic (line 18) | class TestSanitizeUserInputBasic: method test_empty_string_returns_empty (line 21) | def test_empty_string_returns_empty(self): method test_none_returns_none (line 24) | def test_none_returns_none(self): method test_non_string_returns_unchanged (line 27) | def test_non_string_returns_unchanged(self): method test_normal_input_wrapped_in_tags (line 32) | def test_normal_input_wrapped_in_tags(self): method test_default_field_name (line 36) | def test_default_field_name(self): method test_unicode_input_preserved (line 40) | def test_unicode_input_preserved(self): class TestFieldNameValidation (line 46) | class TestFieldNameValidation: method test_valid_field_names (line 49) | def test_valid_field_names(self): method test_invalid_field_name_replaced (line 54) | def test_invalid_field_name_replaced(self): method test_empty_field_name_replaced (line 59) | def test_empty_field_name_replaced(self): method test_field_name_with_spaces_replaced (line 63) | def test_field_name_with_spaces_replaced(self): method test_field_name_with_special_chars_replaced (line 67) | def test_field_name_with_special_chars_replaced(self): class TestLengthLimiting (line 72) | class TestLengthLimiting: method test_at_limit_not_truncated (line 75) | def test_at_limit_not_truncated(self): method test_over_limit_truncated (line 81) | def test_over_limit_truncated(self): method test_truncated_length_is_correct (line 86) | def test_truncated_length_is_correct(self): class TestInjectionRolePattern (line 95) | class TestInjectionRolePattern: method test_role_markers_filtered (line 112) | def test_role_markers_filtered(self, payload): method test_normal_brackets_not_filtered (line 116) | def test_normal_brackets_not_filtered(self): class TestInjectionRoleHeaderPattern (line 121) | class TestInjectionRoleHeaderPattern: method test_role_headers_filtered (line 137) | def test_role_headers_filtered(self, payload): method test_normal_colon_usage_not_filtered (line 141) | def test_normal_colon_usage_not_filtered(self): class TestConfirmationBypassPattern (line 149) | class TestConfirmationBypassPattern: method test_bypass_phrases_filtered (line 165) | def test_bypass_phrases_filtered(self, payload): method test_normal_confirmation_text_not_filtered (line 169) | def test_normal_confirmation_text_not_filtered(self): class TestInstructionOverridePattern (line 174) | class TestInstructionOverridePattern: method test_override_phrases_filtered (line 191) | def test_override_phrases_filtered(self, payload): method test_normal_instruction_text_not_filtered (line 195) | def test_normal_instruction_text_not_filtered(self): class TestCombinedPayloads (line 202) | class TestCombinedPayloads: method test_multiple_patterns_all_filtered (line 205) | def test_multiple_patterns_all_filtered(self): method test_injection_inside_normal_text (line 215) | def test_injection_inside_normal_text(self): class TestXMLWrapping (line 222) | class TestXMLWrapping: method test_output_structure (line 225) | def test_output_structure(self): method test_content_preserved_inside_tags (line 230) | def test_content_preserved_inside_tags(self): class TestMSRCPoC (line 236) | class TestMSRCPoC: method test_poc1_system_colon_inside_brackets (line 239) | def test_poc1_system_colon_inside_brackets(self): method test_poc2_system_update_header_and_override (line 251) | def test_poc2_system_update_header_and_override(self): method test_poc3_confirmation_bypass (line 268) | def test_poc3_confirmation_bypass(self): method test_all_pocs_wrapped_in_delimiters (line 276) | def test_all_pocs_wrapped_in_delimiters(self): class TestEdgeCases (line 289) | class TestEdgeCases: method test_whitespace_only_input (line 292) | def test_whitespace_only_input(self): method test_newlines_preserved (line 296) | def test_newlines_preserved(self): method test_html_in_input_preserved (line 300) | def test_html_in_input_preserved(self): method test_exactly_at_max_length (line 304) | def test_exactly_at_max_length(self): method test_one_over_max_length (line 310) | def test_one_over_max_length(self): FILE: tests/test_race_condition_real.py class MockConstellation (line 42) | class MockConstellation: method __init__ (line 45) | def __init__(self): method mark_task_completed (line 52) | def mark_task_completed(self, task_id: str): method get_ready_tasks (line 57) | def get_ready_tasks(self): method modify_task (line 62) | def modify_task(self, task_id: str, modification: str): method is_complete (line 71) | def is_complete(self): class MockOrchestrator (line 76) | class MockOrchestrator: method __init__ (line 79) | def __init__(self, constellation: MockConstellation, event_bus, synchr... method orchestrate (line 86) | async def orchestrate(self): method _execute_task (line 124) | async def _execute_task(self, task_id: str): class MockAgent (line 154) | class MockAgent: method __init__ (line 157) | def __init__(self, constellation: MockConstellation, event_bus, modifi... method start_listening (line 165) | async def start_listening(self): method handle_task_completion (line 181) | async def handle_task_completion(self, event: TaskEvent): method on_task_completion (line 213) | async def on_task_completion(self, event: TaskEvent): function event_bus (line 219) | def event_bus(): function constellation (line 225) | def constellation(): class AgentObserverWrapper (line 237) | class AgentObserverWrapper: method __init__ (line 240) | def __init__(self, agent): method on_event (line 243) | async def on_event(self, event): class TestRaceConditionWithSynchronizer (line 248) | class TestRaceConditionWithSynchronizer: method test_orchestrator_waits_for_agent_modification (line 252) | async def test_orchestrator_waits_for_agent_modification(self, event_b... method test_race_condition_prevented (line 333) | async def test_race_condition_prevented(self, event_bus, constellation): class TestRaceConditionWithoutSynchronizer (line 405) | class TestRaceConditionWithoutSynchronizer: method test_race_condition_occurs_without_sync (line 409) | async def test_race_condition_occurs_without_sync(self, event_bus, con... FILE: tests/test_real_galaxy_session_integration.py class TestRealGalaxySessionWithMockDevices (line 28) | class TestRealGalaxySessionWithMockDevices: class NoComputerRunActionFilter (line 31) | class NoComputerRunActionFilter(logging.Filter): method filter (line 34) | def filter(self, record): method _setup_comprehensive_logging (line 43) | def _setup_comprehensive_logging(self): method _cleanup_logging (line 92) | def _cleanup_logging(self, console_handler, configured_loggers, origin... method mock_linux_server_1 (line 99) | def mock_linux_server_1(self) -> AgentProfile: method mock_linux_server_2 (line 132) | def mock_linux_server_2(self) -> AgentProfile: method mock_windows_workstation (line 166) | def mock_windows_workstation(self) -> AgentProfile: method temp_output_dir (line 201) | def temp_output_dir(self): method mock_constellation_client (line 207) | def mock_constellation_client( method test_real_galaxy_session_execution_with_mock_devices (line 332) | async def test_real_galaxy_session_execution_with_mock_devices( method test_session_with_different_request_types (line 556) | async def test_session_with_different_request_types( method test_session_error_handling (line 639) | async def test_session_error_handling( FILE: tests/test_realistic_constellation_observer.py class TestRealisticsConstellationObserverLogger (line 23) | class TestRealisticsConstellationObserverLogger: method task_event (line 27) | def task_event(self): method mock_orchestrator (line 41) | def mock_orchestrator(self): method test_realistic_scenario_with_logging_levels (line 49) | async def test_realistic_scenario_with_logging_levels( method test_with_method_wrapping_to_check_calls (line 115) | async def test_with_method_wrapping_to_check_calls( method test_exception_handling_in_observer (line 176) | async def test_exception_handling_in_observer( method test_event_type_filtering (line 209) | async def test_event_type_filtering(self, mock_orchestrator, caplog): FILE: tests/test_server_client_config_migration.py class TestServerClientConfigMigration (line 17) | class TestServerClientConfigMigration: method setup_class (line 21) | def setup_class(cls): method test_server_eva_session (line 26) | def test_server_eva_session(self): method test_client_config_dict_compatibility (line 34) | def test_client_config_dict_compatibility(self): method test_attribute_error_prevention (line 53) | def test_attribute_error_prevention(self): method test_attribute_access_methods (line 64) | def test_attribute_access_methods(self): method test_config_to_dict_preserves_all_sections (line 79) | def test_config_to_dict_preserves_all_sections(self): method test_eva_session_uppercase_lowercase_mapping (line 105) | def test_eva_session_uppercase_lowercase_mapping(self): FILE: tests/test_session_observers.py function test_observer_imports (line 18) | def test_observer_imports(): function test_observer_instantiation (line 38) | def test_observer_instantiation(): function test_modular_structure (line 79) | def test_modular_structure(): function test_observer_interfaces (line 127) | def test_observer_interfaces(): function main (line 175) | def main(): FILE: tests/test_session_visualization_integration.py class MockConstellationState (line 23) | class MockConstellationState: method __init__ (line 24) | def __init__(self, value): class MockConstellation (line 28) | class MockConstellation: method __init__ (line 29) | def __init__(self): method get_statistics (line 36) | def get_statistics(self): class MockConstellationEvent (line 48) | class MockConstellationEvent: method __init__ (line 49) | def __init__(self, event_type, constellation): class MockTaskEvent (line 55) | class MockTaskEvent: method __init__ (line 56) | def __init__(self, event_type, task_id, constellation_id): function test_session_visualization_integration (line 62) | def test_session_visualization_integration(): FILE: tests/unit/galaxy/agents/test_constellation_factory_refactor.py class TestConstellationStrategyFactory (line 50) | class TestConstellationStrategyFactory: method test_create_llm_interaction_strategy_creation_mode (line 53) | def test_create_llm_interaction_strategy_creation_mode(self): method test_create_llm_interaction_strategy_editing_mode (line 63) | def test_create_llm_interaction_strategy_editing_mode(self): method test_create_action_execution_strategy_creation_mode (line 73) | def test_create_action_execution_strategy_creation_mode(self): method test_create_action_execution_strategy_editing_mode (line 83) | def test_create_action_execution_strategy_editing_mode(self): method test_unsupported_weaving_mode_llm_interaction (line 93) | def test_unsupported_weaving_mode_llm_interaction(self): method test_unsupported_weaving_mode_action_execution (line 98) | def test_unsupported_weaving_mode_action_execution(self): method test_get_all_strategies_creation_mode (line 105) | def test_get_all_strategies_creation_mode(self): method test_get_all_strategies_editing_mode (line 122) | def test_get_all_strategies_editing_mode(self): class TestConstellationPrompterFactory (line 140) | class TestConstellationPrompterFactory: method test_create_prompter_creation_mode (line 143) | def test_create_prompter_creation_mode(self): method test_create_prompter_editing_mode (line 159) | def test_create_prompter_editing_mode(self): method test_unsupported_weaving_mode_prompter (line 175) | def test_unsupported_weaving_mode_prompter(self): class TestBaseConstellationStrategy (line 183) | class TestBaseConstellationStrategy: method mock_agent (line 187) | def mock_agent(self): method mock_context (line 199) | def mock_context(self): method test_base_llm_interaction_strategy_inheritance (line 207) | def test_base_llm_interaction_strategy_inheritance(self): method test_base_action_execution_strategy_inheritance (line 216) | def test_base_action_execution_strategy_inheritance(self): class TestStrategyBehaviorDifferentiation (line 224) | class TestStrategyBehaviorDifferentiation: method mock_agent (line 228) | def mock_agent(self): method mock_context (line 240) | def mock_context(self): method test_creation_vs_editing_llm_strategies_different_behavior (line 261) | async def test_creation_vs_editing_llm_strategies_different_behavior( class TestPrompterBehaviorDifferentiation (line 290) | class TestPrompterBehaviorDifferentiation: method test_creation_vs_editing_prompters_different_behavior (line 293) | def test_creation_vs_editing_prompters_different_behavior(self): FILE: tests/unit/galaxy/agents/test_constellation_simple.py class TestConstellationRefactor (line 18) | class TestConstellationRefactor: method test_strategy_factory_creates_different_strategies (line 21) | def test_strategy_factory_creates_different_strategies(self): method test_prompter_factory_creates_different_prompters (line 45) | def test_prompter_factory_creates_different_prompters(self): method test_strategy_factory_handles_invalid_mode (line 68) | def test_strategy_factory_handles_invalid_mode(self): method test_prompter_factory_handles_invalid_mode (line 76) | def test_prompter_factory_handles_invalid_mode(self): method test_create_all_strategies_works (line 83) | def test_create_all_strategies_works(self): FILE: tests/unit/galaxy/agents/test_galaxy_agent_states.py class TestAgentStateMachine (line 38) | class TestAgentStateMachine: method mock_agent (line 42) | def mock_agent(self): method mock_context (line 52) | def mock_context(self): method simple_constellation (line 57) | def simple_constellation(self): method test_start_state_success (line 71) | async def test_start_state_success( method test_start_state_no_constellation (line 93) | async def test_start_state_no_constellation(self, mock_agent, mock_con... method test_start_state_exception (line 107) | async def test_start_state_exception(self, mock_agent, mock_context): method test_start_state_transitions (line 121) | def test_start_state_transitions(self, mock_agent): method test_monitor_state_task_completion (line 141) | async def test_monitor_state_task_completion( method test_monitor_state_continue_processing (line 177) | async def test_monitor_state_continue_processing( method test_monitor_state_agent_decides_finish (line 214) | async def test_monitor_state_agent_decides_finish( method test_monitor_state_exception_handling (line 251) | async def test_monitor_state_exception_handling(self, mock_agent, mock... method test_monitor_state_transitions (line 280) | def test_monitor_state_transitions(self, mock_agent): method test_finish_state (line 305) | async def test_finish_state(self, mock_agent, mock_context): method test_fail_state (line 322) | async def test_fail_state(self, mock_agent, mock_context): method test_state_manager (line 338) | def test_state_manager(self): method test_state_properties (line 360) | def test_state_properties(self): class TestTaskTimeoutConfiguration (line 379) | class TestTaskTimeoutConfiguration: method mock_config (line 383) | def mock_config(self): method simple_constellation (line 395) | def simple_constellation(self): method test_timeout_configuration (line 409) | async def test_timeout_configuration(self, mock_config, simple_constel... method test_timeout_configuration_preserves_existing (line 432) | async def test_timeout_configuration_preserves_existing( class TestAgentIntegration (line 448) | class TestAgentIntegration: method agent_with_states (line 452) | def agent_with_states(self): method simple_constellation (line 460) | def simple_constellation(self): method test_agent_initialization (line 474) | async def test_agent_initialization(self, agent_with_states): method test_agent_status_manager (line 482) | async def test_agent_status_manager(self, agent_with_states): method test_full_state_cycle_success (line 488) | async def test_full_state_cycle_success( method test_full_state_cycle_with_continue (line 540) | async def test_full_state_cycle_with_continue( FILE: tests/unit/galaxy/session/test_galaxy_round_refactored.py function mock_agent (line 33) | def mock_agent(): function mock_orchestrator (line 55) | def mock_orchestrator(): function mock_context (line 65) | def mock_context(): function simple_constellation (line 73) | def simple_constellation(): class TestGalaxyRoundStateMachine (line 81) | class TestGalaxyRoundStateMachine: method galaxy_round (line 85) | def galaxy_round(self, mock_agent, mock_orchestrator, mock_context): method test_round_initialization (line 97) | async def test_round_initialization( method test_successful_round_execution (line 107) | async def test_successful_round_execution( method test_round_execution_with_state_transitions (line 136) | async def test_round_execution_with_state_transitions( method test_round_execution_with_error (line 191) | async def test_round_execution_with_error(self, galaxy_round, mock_age... method test_round_state_machine_loop (line 206) | async def test_round_state_machine_loop( method test_round_context_update (line 234) | async def test_round_context_update( method test_round_no_final_constellation (line 249) | async def test_round_no_final_constellation(self, galaxy_round, mock_a... method test_round_properties (line 263) | async def test_round_properties(self, galaxy_round, simple_constellati... method test_check_for_new_tasks (line 274) | async def test_check_for_new_tasks(self, galaxy_round, simple_constell... class TestGalaxyRoundObserverIntegration (line 293) | class TestGalaxyRoundObserverIntegration: method galaxy_round_with_observers (line 297) | def galaxy_round_with_observers(self, mock_agent, mock_orchestrator, m... method test_observer_setup (line 310) | async def test_observer_setup(self, galaxy_round_with_observers): method test_observer_subscription (line 324) | async def test_observer_subscription(self, galaxy_round_with_observers): class TestGalaxyRoundErrorScenarios (line 339) | class TestGalaxyRoundErrorScenarios: method error_round (line 343) | def error_round(self, mock_agent, mock_orchestrator, mock_context): method test_agent_handle_exception (line 355) | async def test_agent_handle_exception(self, error_round, mock_agent): method test_state_transition_exception (line 369) | async def test_state_transition_exception(self, error_round, mock_agent): method test_context_update_exception (line 382) | async def test_context_update_exception( class TestGalaxyRoundAsyncBehavior (line 402) | class TestGalaxyRoundAsyncBehavior: method test_async_delay_prevents_busy_waiting (line 406) | async def test_async_delay_prevents_busy_waiting( FILE: tests/unit/galaxy/session/test_modular_observers.py class TestModularObservers (line 20) | class TestModularObservers: method test_observer_imports (line 23) | def test_observer_imports(self): method test_constellation_progress_observer_creation (line 29) | def test_constellation_progress_observer_creation(self): method test_session_metrics_observer_creation (line 40) | def test_session_metrics_observer_creation(self): method test_dag_visualization_observer_creation (line 49) | def test_dag_visualization_observer_creation(self): method test_progress_observer_task_event_handling (line 57) | async def test_progress_observer_task_event_handling(self): method test_metrics_observer_task_event_handling (line 85) | async def test_metrics_observer_task_event_handling(self): method test_observer_module_locations (line 113) | def test_observer_module_locations(self): FILE: tests/unit/galaxy/session/test_observer_modular_structure.py function test_modular_imports (line 21) | def test_modular_imports(): function test_observer_modules (line 70) | def test_observer_modules(): function test_observer_instantiation (line 101) | def test_observer_instantiation(): function test_backward_compatibility (line 141) | def test_backward_compatibility(): function main (line 167) | def main(): FILE: tests/unit/galaxy/session/test_observers_refactored.py class TestConstellationProgressObserver (line 22) | class TestConstellationProgressObserver: method mock_agent (line 26) | def mock_agent(self): method mock_context (line 34) | def mock_context(self): method observer (line 39) | def observer(self, mock_agent, mock_context): method test_task_event_handling (line 44) | async def test_task_event_handling(self, observer, mock_agent): method test_task_event_with_error (line 74) | async def test_task_event_with_error(self, observer, mock_agent): method test_agent_without_queue (line 103) | async def test_agent_without_queue(self, mock_context): method test_task_event_exception_handling (line 136) | async def test_task_event_exception_handling(self, observer, mock_agent): method test_constellation_event_handling (line 163) | async def test_constellation_event_handling(self, observer): method test_constellation_event_exception_handling (line 185) | async def test_constellation_event_exception_handling(self, observer): method test_on_event_routing (line 209) | async def test_on_event_routing(self, observer, mock_agent): method test_multiple_task_events_ordering (line 246) | async def test_multiple_task_events_ordering(self, observer, mock_agent): method test_task_result_storage_format (line 280) | async def test_task_result_storage_format(self, observer, mock_agent): method test_concurrent_event_handling (line 310) | async def test_concurrent_event_handling(self, observer, mock_agent): class TestObserverIntegrationWithAgent (line 342) | class TestObserverIntegrationWithAgent: method integrated_setup (line 346) | def integrated_setup(self): method test_end_to_end_event_flow (line 359) | async def test_end_to_end_event_flow(self, integrated_setup): method test_multiple_events_processed_sequentially (line 394) | async def test_multiple_events_processed_sequentially(self, integrated... FILE: tests/unit/schema/test_automatic_id_assignment.py function test_automatic_id_generation (line 19) | def test_automatic_id_generation(): function test_explicit_id_preservation (line 58) | def test_explicit_id_preservation(): function test_uniqueness_validation (line 89) | def test_uniqueness_validation(): function test_id_manager_context (line 158) | def test_id_manager_context(): function test_sequential_id_generation (line 190) | def test_sequential_id_generation(): function test_empty_string_handling (line 227) | def test_empty_string_handling(): function main (line 256) | def main(): FILE: tests/unit/schema/test_basemodel_integration.py function test_task_star_basemodel (line 33) | def test_task_star_basemodel(): function test_task_star_line_basemodel (line 78) | def test_task_star_line_basemodel(): function test_task_constellation_basemodel (line 116) | def test_task_constellation_basemodel(): function test_complex_scenario (line 188) | def test_complex_scenario(): function test_validation_and_error_handling (line 262) | def test_validation_and_error_handling(): function main (line 300) | def main(): FILE: tests/unit/schema/test_list_dict_compatibility.py function test_tasks_and_dependencies_as_lists (line 24) | def test_tasks_and_dependencies_as_lists(): function test_tasks_and_dependencies_as_dicts (line 102) | def test_tasks_and_dependencies_as_dicts(): function test_mixed_format_compatibility (line 148) | def test_mixed_format_compatibility(): function test_conversion_methods (line 194) | def test_conversion_methods(): function test_json_serialization (line 241) | def test_json_serialization(): function main (line 291) | def main(): FILE: tests/unit/schema/test_optional_fields.py function test_optional_fields (line 18) | def test_optional_fields(): function test_task_description_removed (line 78) | def test_task_description_removed(): function test_backwards_compatibility (line 116) | def test_backwards_compatibility(): function main (line 152) | def main(): FILE: tests/unit/test_constellation_aip_migration.py class TestConnectionManagerAIPMigration (line 34) | class TestConnectionManagerAIPMigration: method test_transport_initialization (line 38) | async def test_transport_initialization(self): method test_protocol_instance_creation (line 49) | async def test_protocol_instance_creation(self): method test_is_connected_uses_transport (line 73) | async def test_is_connected_uses_transport(self): method test_cleanup_removes_all_protocols (line 92) | async def test_cleanup_removes_all_protocols(self): class TestMessageProcessorAIPMigration (line 113) | class TestMessageProcessorAIPMigration: method test_uses_transport_not_websocket (line 117) | async def test_uses_transport_not_websocket(self): method test_message_loop_uses_transport_receive (line 136) | async def test_message_loop_uses_transport_receive(self): class TestHeartbeatManagerAIPMigration (line 189) | class TestHeartbeatManagerAIPMigration: method test_creates_heartbeat_protocol_instances (line 193) | async def test_creates_heartbeat_protocol_instances(self): method test_heartbeat_protocol_cleanup_on_stop (line 210) | async def test_heartbeat_protocol_cleanup_on_stop(self): class TestMessageFormatCompatibility (line 238) | class TestMessageFormatCompatibility: method test_registration_message_format (line 241) | def test_registration_message_format(self): method test_heartbeat_message_format (line 273) | def test_heartbeat_message_format(self): method test_task_message_format (line 295) | def test_task_message_format(self): method test_device_info_request_format (line 320) | def test_device_info_request_format(self): class TestProtocolBehaviorConsistency (line 342) | class TestProtocolBehaviorConsistency: method test_registration_workflow (line 346) | async def test_registration_workflow(self): method test_heartbeat_sending (line 376) | async def test_heartbeat_sending(self): method test_error_handling_consistency (line 397) | async def test_error_handling_consistency(self): class TestStateManagement (line 424) | class TestStateManagement: method test_pending_task_tracking (line 428) | async def test_pending_task_tracking(self): method test_pending_task_completion (line 444) | async def test_pending_task_completion(self): method test_pending_task_cancellation (line 470) | async def test_pending_task_cancellation(self): method test_device_info_request_tracking (line 489) | async def test_device_info_request_tracking(self): FILE: tests/unit/test_device_info_provider.py class TestDeviceSystemInfo (line 12) | class TestDeviceSystemInfo: method test_device_system_info_creation (line 15) | def test_device_system_info_creation(self): method test_to_dict (line 35) | def test_to_dict(self): class TestDeviceInfoProvider (line 55) | class TestDeviceInfoProvider: method test_collect_system_info_success (line 64) | def test_collect_system_info_success( method test_collect_system_info_with_custom_metadata (line 108) | def test_collect_system_info_with_custom_metadata( method test_collect_system_info_handles_errors (line 132) | def test_collect_system_info_handles_errors(self, mock_system): method test_detect_features_windows (line 143) | def test_detect_features_windows(self, mock_system): method test_detect_features_linux (line 155) | def test_detect_features_linux(self, mock_system): method test_detect_features_macos (line 166) | def test_detect_features_macos(self, mock_system): method test_get_platform_type_computer (line 176) | def test_get_platform_type_computer(self, mock_system): method test_load_server_configured_metadata_no_file (line 187) | def test_load_server_configured_metadata_no_file(self): method test_load_server_configured_metadata_yaml (line 197) | def test_load_server_configured_metadata_yaml(self, mock_exists, mock_... FILE: tests/unit/test_event_system.py class TestEventBus (line 43) | class TestEventBus: method test_event_bus_singleton (line 46) | def test_event_bus_singleton(self): method test_event_subscription_and_publishing (line 53) | async def test_event_subscription_and_publishing(self): method test_multiple_observers (line 76) | async def test_multiple_observers(self): method test_unsubscribe_observer (line 102) | def test_unsubscribe_observer(self): method test_observer_exception_handling (line 115) | async def test_observer_exception_handling(self): class TestEventTypes (line 144) | class TestEventTypes: method test_task_event_creation (line 147) | def test_task_event_creation(self): method test_constellation_event_creation (line 163) | def test_constellation_event_creation(self): class TestConstellationProgressObserver (line 180) | class TestConstellationProgressObserver: method test_task_progress_handling (line 184) | async def test_task_progress_handling(self): method test_constellation_event_handling (line 216) | async def test_constellation_event_handling(self): method test_irrelevant_event_filtering (line 244) | async def test_irrelevant_event_filtering(self): class TestSessionMetricsObserver (line 270) | class TestSessionMetricsObserver: method test_metrics_collection (line 274) | async def test_metrics_collection(self): method test_failed_task_metrics (line 309) | async def test_failed_task_metrics(self): class TestEventSystemIntegration (line 343) | class TestEventSystemIntegration: method test_end_to_end_event_flow (line 347) | async def test_end_to_end_event_flow(self): method test_concurrent_event_publishing (line 403) | async def test_concurrent_event_publishing(self): FILE: tests/unit/test_galaxy_state_machine.py class MockGalaxyWeaverAgent (line 33) | class MockGalaxyWeaverAgent: method __init__ (line 36) | def __init__(self): method current_constellation (line 41) | def current_constellation(self): method current_constellation (line 45) | def current_constellation(self, value): method process_initial_request (line 48) | async def process_initial_request(self, request, context=None): method update_constellation_with_lock (line 56) | async def update_constellation_with_lock(self, task_result, context=No... method should_continue (line 60) | async def should_continue(self, constellation, context=None): class TestGalaxyAgentStateManager (line 65) | class TestGalaxyAgentStateManager: method test_state_manager_initialization (line 68) | def test_state_manager_initialization(self): method test_state_caching (line 83) | def test_state_caching(self): method test_unknown_status_handling (line 94) | def test_unknown_status_handling(self): class TestCreatingGalaxyAgentState (line 103) | class TestCreatingGalaxyAgentState: method test_successful_constellation_creation (line 107) | async def test_successful_constellation_creation(self): method test_failed_constellation_creation (line 120) | async def test_failed_constellation_creation(self): method test_existing_constellation_handling (line 135) | async def test_existing_constellation_handling(self): method test_state_properties (line 148) | def test_state_properties(self): class TestMonitoringGalaxyAgentState (line 157) | class TestMonitoringGalaxyAgentState: method setup_method (line 160) | def setup_method(self): method test_task_started_tracking (line 172) | async def test_task_started_tracking(self): method test_task_completed_tracking (line 189) | async def test_task_completed_tracking(self): method test_completion_check_with_running_tasks (line 215) | async def test_completion_check_with_running_tasks(self): method test_completion_check_with_pending_updates (line 226) | async def test_completion_check_with_pending_updates(self): method test_true_completion (line 237) | async def test_true_completion(self): method test_agent_wants_to_continue (line 249) | async def test_agent_wants_to_continue(self): method test_state_properties (line 259) | def test_state_properties(self): class TestFinishedAndFailedStates (line 266) | class TestFinishedAndFailedStates: method test_finished_state (line 270) | async def test_finished_state(self): method test_failed_state (line 282) | async def test_failed_state(self): class TestStateTransitions (line 294) | class TestStateTransitions: method test_creating_to_monitoring_transition (line 297) | def test_creating_to_monitoring_transition(self): method test_monitoring_to_finished_transition (line 307) | def test_monitoring_to_finished_transition(self): method test_any_to_failed_transition (line 317) | def test_any_to_failed_transition(self): class TestTaskUpdateQueueing (line 328) | class TestTaskUpdateQueueing: method test_queue_multiple_updates (line 332) | async def test_queue_multiple_updates(self): method test_process_updates_in_order (line 349) | async def test_process_updates_in_order(self): method test_queue_update_on_non_monitoring_state (line 373) | async def test_queue_update_on_non_monitoring_state(self): FILE: tests/unit/test_presenters.py class TestPresenterFactory (line 24) | class TestPresenterFactory(unittest.TestCase): method test_create_rich_presenter (line 27) | def test_create_rich_presenter(self): method test_create_presenter_with_unknown_type (line 33) | def test_create_presenter_with_unknown_type(self): method test_get_available_presenters (line 39) | def test_get_available_presenters(self): method test_register_custom_presenter (line 45) | def test_register_custom_presenter(self): method test_register_invalid_presenter (line 69) | def test_register_invalid_presenter(self): class TestRichPresenter (line 78) | class TestRichPresenter(unittest.TestCase): method setUp (line 81) | def setUp(self): method test_present_thought (line 86) | def test_present_thought(self, mock_console_class): method test_present_observation (line 100) | def test_present_observation(self, mock_console_class): method test_present_status_finish (line 112) | def test_present_status_finish(self, mock_console_class): method test_present_status_fail (line 124) | def test_present_status_fail(self, mock_console_class): method test_present_plan (line 136) | def test_present_plan(self, mock_console_class): method test_present_comment (line 149) | def test_present_comment(self, mock_console_class): method test_present_results (line 161) | def test_present_results(self, mock_console_class): method test_present_results_truncation (line 173) | def test_present_results_truncation(self, mock_console_class): class TestAppAgentPresentation (line 186) | class TestAppAgentPresentation(unittest.TestCase): method test_present_app_agent_response (line 190) | def test_present_app_agent_response(self, mock_console_class): method test_present_app_agent_response_with_screenshot (line 219) | def test_present_app_agent_response_with_screenshot(self, mock_console... class TestHostAgentPresentation (line 241) | class TestHostAgentPresentation(unittest.TestCase): method test_present_host_agent_response (line 245) | def test_present_host_agent_response(self, mock_console_class): method test_present_host_agent_response_without_action_str (line 273) | def test_present_host_agent_response_without_action_str(self, mock_con... method test_present_host_agent_response_with_application (line 299) | def test_present_host_agent_response_with_application(self, mock_conso... class TestConstellationAgentPresentation (line 325) | class TestConstellationAgentPresentation(unittest.TestCase): method test_present_constellation_agent_response (line 329) | def test_present_constellation_agent_response(self, mock_console_class): method test_present_constellation_with_tasks (line 351) | def test_present_constellation_with_tasks(self, mock_console_class): class TestActionListPresentation (line 395) | class TestActionListPresentation(unittest.TestCase): method test_present_action_list (line 399) | def test_present_action_list(self, mock_console_class): method test_present_action_list_success_only (line 427) | def test_present_action_list_success_only(self, mock_console_class): class TestConstellationEditingActionsPresentation (line 455) | class TestConstellationEditingActionsPresentation(unittest.TestCase): method test_present_constellation_editing_actions (line 459) | def test_present_constellation_editing_actions(self, mock_console_class): method test_present_constellation_editing_actions_empty (line 484) | def test_present_constellation_editing_actions_empty(self, mock_consol... method test_format_constellation_operation_add_task (line 499) | def test_format_constellation_operation_add_task(self): method test_format_constellation_operation_remove_task (line 511) | def test_format_constellation_operation_remove_task(self): method test_format_constellation_operation_add_dependency (line 523) | def test_format_constellation_operation_add_dependency(self): FILE: tests/unit/test_refactoring.py function test_strategy_factory (line 28) | def test_strategy_factory(): function test_prompter_factory (line 63) | def test_prompter_factory(): function test_strategy_types (line 110) | def test_strategy_types(): function main (line 143) | def main(): FILE: tests/unit/test_ws_manager_device_info.py class TestWSManagerAgentProfile (line 18) | class TestWSManagerAgentProfile: method test_add_device_client_with_system_info (line 21) | def test_add_device_client_with_system_info(self): method test_add_constellation_client_no_system_info (line 52) | def test_add_constellation_client_no_system_info(self): method test_get_device_system_info (line 72) | def test_get_device_system_info(self): method test_get_device_system_info_not_found (line 99) | def test_get_device_system_info_not_found(self): method test_get_all_devices_info (line 107) | def test_get_all_devices_info(self): method test_load_device_configs_yaml (line 146) | def test_load_device_configs_yaml(self): method test_load_device_configs_json (line 182) | def test_load_device_configs_json(self): method test_merge_device_info (line 208) | def test_merge_device_info(self): method test_add_client_with_server_config (line 244) | def test_add_client_with_server_config(self): method test_load_device_configs_file_not_found (line 296) | def test_load_device_configs_file_not_found(self): FILE: tests/visualization/debug_constellation_modified.py function test_constellation_modified_handling (line 20) | async def test_constellation_modified_handling(): FILE: tests/visualization/debug_observer_output.py function test_observer_output (line 20) | async def test_observer_output(): FILE: tests/visualization/debug_visualization.py function debug_visualization (line 12) | async def debug_visualization(): FILE: tests/visualization/test_comprehensive_changes.py function test_all_change_types (line 15) | async def test_all_change_types(): FILE: tests/visualization/test_constellation_agent_events.py class TestEventObserver (line 26) | class TestEventObserver: method __init__ (line 29) | def __init__(self): method on_event (line 32) | async def on_event(self, event): function test_constellation_agent_event_publishing (line 42) | async def test_constellation_agent_event_publishing(): FILE: tests/visualization/test_constellation_agent_integration.py class SimulatedConstellationAgent (line 14) | class SimulatedConstellationAgent: method __init__ (line 17) | def __init__(self, name="simulated_constellation_agent"): method simulate_process_editing (line 22) | async def simulate_process_editing(self, before_constellation, after_c... function test_constellation_agent_integration (line 53) | async def test_constellation_agent_integration(): FILE: tests/visualization/test_constellation_comparison.py function test_constellation_comparison (line 22) | async def test_constellation_comparison(): FILE: tests/visualization/test_constellation_events.py class MockDevice (line 24) | class MockDevice: method __init__ (line 27) | def __init__(self, device_id: str): method execute_command (line 31) | async def execute_command(self, command: str) -> str: class MockDeviceManager (line 37) | class MockDeviceManager(ConstellationDeviceManager): method __init__ (line 40) | def __init__(self): method get_available_devices (line 67) | async def get_available_devices(self) -> List[dict]: method execute_task (line 74) | async def execute_task(self, device_id: str, task_data: dict) -> dict: class EventCollector (line 86) | class EventCollector(IEventObserver): method __init__ (line 89) | def __init__(self): method on_event (line 92) | async def on_event(self, event: Event): method handle_event (line 97) | async def handle_event(self, event: Event): function test_constellation_events (line 103) | async def test_constellation_events(): function main (line 202) | async def main(): FILE: tests/visualization/test_dag_demo.py function create_sample_constellation (line 33) | def create_sample_constellation() -> TaskConstellation: function simulate_execution (line 109) | def simulate_execution(constellation: TaskConstellation): function demonstrate_visualization_modes (line 146) | def demonstrate_visualization_modes(constellation: TaskConstellation): function main (line 183) | def main(): FILE: tests/visualization/test_dag_mock.py class TaskStar (line 23) | class TaskStar: method __init__ (line 24) | def __init__(self, task_id: str, description: str): method mark_completed (line 31) | def mark_completed(self): method mark_failed (line 34) | def mark_failed(self): method to_dict (line 37) | def to_dict(self): class TaskStarLine (line 45) | class TaskStarLine: method __init__ (line 46) | def __init__( method to_dict (line 59) | def to_dict(self): class SimpleTaskConstellation (line 68) | class SimpleTaskConstellation: method __init__ (line 69) | def __init__( method tasks (line 104) | def tasks(self): method dependencies (line 108) | def dependencies(self): method task_count (line 112) | def task_count(self): method dependency_count (line 116) | def dependency_count(self): method created_at (line 120) | def created_at(self): method updated_at (line 124) | def updated_at(self): method execution_start_time (line 128) | def execution_start_time(self): method execution_end_time (line 132) | def execution_end_time(self): method execution_duration (line 136) | def execution_duration(self): method _visualize_dag (line 143) | def _visualize_dag(self, action: str = "update"): method add_task (line 155) | def add_task(self, task: TaskStar) -> bool: method add_dependency (line 166) | def add_dependency(self, dependency: TaskStarLine) -> bool: method mark_task_completed (line 185) | def mark_task_completed(self, task_id: str, success: bool = True) -> b... method start_execution (line 201) | def start_execution(self): method complete_execution (line 207) | def complete_execution(self, success: bool = True): method get_all_tasks (line 215) | def get_all_tasks(self): method get_all_dependencies (line 219) | def get_all_dependencies(self): method get_statistics (line 223) | def get_statistics(self): method get_ready_tasks (line 259) | def get_ready_tasks(self): method get_task_dependencies (line 284) | def get_task_dependencies(self, task_id: str): method get_task (line 288) | def get_task(self, task_id: str): function test_dag_visualization (line 293) | def test_dag_visualization(): FILE: tests/visualization/test_dependency_property_changes.py function test_dependency_property_changes (line 14) | async def test_dependency_property_changes(): FILE: tests/visualization/test_enhanced_visualization.py class MockDevice (line 32) | class MockDevice: method __init__ (line 35) | def __init__(self, device_id: str): method execute_command (line 39) | async def execute_command(self, command: str) -> str: class MockDeviceManager (line 45) | class MockDeviceManager(ConstellationDeviceManager): method __init__ (line 48) | def __init__(self): method get_available_devices (line 75) | async def get_available_devices(self) -> List[dict]: method execute_task (line 82) | async def execute_task(self, device_id: str, task_data: dict) -> dict: function test_enhanced_visualization (line 95) | async def test_enhanced_visualization(): function main (line 229) | async def main(): FILE: tests/visualization/test_individual_events.py function test_individual_events (line 40) | async def test_individual_events(): FILE: tests/visualization/test_manual_constellation_events.py class TestEventObserver (line 16) | class TestEventObserver: method __init__ (line 19) | def __init__(self): method on_event (line 22) | async def on_event(self, event): method __init__ (line 48) | def __init__(self): method on_event (line 51) | async def on_event(self, event): class TestEventObserver (line 47) | class TestEventObserver: method __init__ (line 19) | def __init__(self): method on_event (line 22) | async def on_event(self, event): method __init__ (line 48) | def __init__(self): method on_event (line 51) | async def on_event(self, event): function test_manual_constellation_event_publishing (line 57) | async def test_manual_constellation_event_publishing(): FILE: tests/visualization/test_refactored_modules.py class MockTaskStar (line 19) | class MockTaskStar: method __init__ (line 22) | def __init__( class MockConstellation (line 33) | class MockConstellation: method __init__ (line 36) | def __init__(self): method get_statistics (line 43) | def get_statistics(self): method get_ready_tasks (line 55) | def get_ready_tasks(self): function test_task_display_creation (line 59) | def test_task_display_creation(): function test_constellation_display_creation (line 69) | def test_constellation_display_creation(): function test_dag_visualizer_creation (line 78) | def test_dag_visualizer_creation(): function test_change_detector_functionality (line 88) | def test_change_detector_functionality(): function test_task_status_icons (line 102) | def test_task_status_icons(): function test_task_summary_formatting (line 113) | def test_task_summary_formatting(): FILE: ufo/agents/agent/app_agent.py class AppAgent (line 43) | class AppAgent(BasicAgent): method __init__ (line 48) | def __init__( method get_prompter (line 89) | def get_prompter( method message_constructor (line 104) | def message_constructor( method _display_agent_comment (line 165) | def _display_agent_comment(self, comment: str) -> None: method print_response (line 210) | def print_response( method demonstration_prompt_helper (line 220) | def demonstration_prompt_helper(self, request) -> Tuple[List[Dict[str,... method external_knowledge_prompt_helper (line 246) | def external_knowledge_prompt_helper( method rag_experience_retrieve (line 297) | def rag_experience_retrieve( method rag_demonstration_retrieve (line 334) | def rag_demonstration_retrieve(self, request: str, demonstration_top_k... method process (line 368) | async def process(self, context: Context) -> None: method process_confirmation (line 387) | def process_confirmation(self) -> bool: method status_manager (line 403) | def status_manager(self) -> AppAgentStatus: method mode (line 410) | def mode(self) -> str: method build_offline_docs_retriever (line 416) | def build_offline_docs_retriever(self) -> None: method build_online_search_retriever (line 424) | def build_online_search_retriever(self, request: str, top_k: int) -> N... method build_experience_retriever (line 434) | def build_experience_retriever(self, db_path: str) -> None: method build_human_demonstration_retriever (line 444) | def build_human_demonstration_retriever(self, db_path: str) -> None: method context_provision (line 454) | async def context_provision( method _load_mcp_context (line 496) | async def _load_mcp_context(self, context: Context) -> None: method default_state (line 532) | def default_state(self) -> ContinueAppAgentState: method tools_info (line 539) | def tools_info(self) -> List[MCPToolInfo]: method tools_info (line 549) | def tools_info(self, tools: List[MCPToolInfo]) -> None: class OpenAIOperatorAgent (line 558) | class OpenAIOperatorAgent(AppAgent): method __init__ (line 566) | def __init__( method process (line 592) | def process(self, context: Context) -> None: method get_prompter (line 606) | def get_prompter(self, main_prompt: str, app_root_name: str) -> AppAge... method message_constructor (line 615) | def message_constructor( method print_response (line 675) | def print_response(self, response_dict: Dict[str, Any]) -> None: method default_state (line 699) | def default_state(self) -> ContinueOpenAIOperatorState: method blackboard (line 706) | def blackboard(self) -> Blackboard: method response_id (line 717) | def response_id(self) -> Optional[str]: method response_id (line 724) | def response_id(self, response_id: str) -> None: method previous_computer_id (line 732) | def previous_computer_id(self) -> Optional[str]: method previous_computer_id (line 739) | def previous_computer_id(self, computer_id: str) -> None: method message (line 747) | def message(self) -> str: method message (line 754) | def message(self, message: str) -> None: method pending_safety_checks (line 762) | def pending_safety_checks(self) -> List[str]: method pending_safety_checks (line 769) | def pending_safety_checks(self, safety_checks: List[str]) -> None: FILE: ufo/agents/agent/basic.py class BasicAgent (line 34) | class BasicAgent(ABC): method __init__ (line 39) | def __init__(self, name: str) -> None: method status (line 64) | def status(self) -> str: method status (line 72) | def status(self, status: str) -> None: method state (line 80) | def state(self) -> AgentState: method memory (line 88) | def memory(self) -> Memory: method memory (line 96) | def memory(self, memory: Memory) -> None: method name (line 104) | def name(self) -> str: method blackboard (line 112) | def blackboard(self) -> Blackboard: method host (line 120) | def host(self) -> HostAgent: method host (line 128) | def host(self, host: BasicAgent) -> None: method get_prompter (line 136) | def get_prompter(self) -> str: method message_constructor (line 144) | def message_constructor(self) -> List[Dict[str, Union[str, List[Dict[s... method context_provision (line 152) | async def context_provision(self) -> None: method get_response (line 159) | def get_response( method response_to_dict (line 178) | def response_to_dict(response: str) -> Dict[str, str]: method step (line 187) | def step(self) -> int: method step (line 195) | def step(self, step: int) -> None: method set_memory_from_list_of_dicts (line 202) | def set_memory_from_list_of_dicts(self, data: List[Dict[str, str]]) ->... method add_memory (line 212) | def add_memory(self, memory_item: MemoryItem) -> None: method delete_memory (line 219) | def delete_memory(self, step: int) -> None: method clear_memory (line 226) | def clear_memory(self) -> None: method reflection (line 232) | def reflection(self) -> None: method set_state (line 239) | def set_state(self, state: AgentState) -> None: method handle (line 251) | async def handle(self, context: Context) -> None: method process (line 258) | async def process(self, context: Context) -> None: method process_resume (line 264) | async def process_resume(self) -> None: method process_asker (line 270) | def process_asker(self, ask_user: bool = True) -> None: method process_confirmation (line 309) | def process_confirmation(self) -> None: method processor (line 316) | def processor(self) -> ProcessorTemplate: method processor (line 324) | def processor(self, processor: ProcessorTemplate) -> None: method status_manager (line 332) | def status_manager(self) -> AgentStatus: method build_offline_docs_retriever (line 339) | def build_offline_docs_retriever(self) -> None: method build_online_search_retriever (line 345) | def build_online_search_retriever(self) -> None: method build_experience_retriever (line 351) | def build_experience_retriever(self) -> None: method build_human_demonstration_retriever (line 357) | def build_human_demonstration_retriever(self) -> None: method print_response (line 363) | def print_response(self) -> None: method _register_self (line 370) | def _register_self(self): method get_cls (line 379) | def get_cls(cls, name: str) -> Type["BasicAgent"]: method default_state (line 388) | def default_state(self) -> AgentState: method get_command_string (line 396) | def get_command_string(command_name: str, params: Dict[str, str]) -> str: class AgentRegistry (line 410) | class AgentRegistry: method register (line 420) | def register( method get (line 463) | def get(cls, agent_name: str) -> Type["BasicAgent"]: method list_agents (line 472) | def list_agents(cls) -> Dict[str, Type["BasicAgent"]]: FILE: ufo/agents/agent/customized_agent.py class CustomizedAgent (line 23) | class CustomizedAgent(AppAgent): class HardwareAgent (line 34) | class HardwareAgent(CustomizedAgent): class LinuxAgent (line 46) | class LinuxAgent(CustomizedAgent): method __init__ (line 51) | def __init__( method get_prompter (line 81) | def get_prompter( method default_state (line 94) | def default_state(self) -> ContinueLinuxAgentState: method message_constructor (line 100) | def message_constructor( method blackboard (line 142) | def blackboard(self) -> Blackboard: class MobileAgent (line 153) | class MobileAgent(CustomizedAgent): method __init__ (line 158) | def __init__( method get_prompter (line 188) | def get_prompter( method default_state (line 201) | def default_state(self) -> ContinueMobileAgentState: method message_constructor (line 207) | def message_constructor( method blackboard (line 266) | def blackboard(self) -> Blackboard: FILE: ufo/agents/agent/evaluation_agent.py class EvaluationAgent (line 20) | class EvaluationAgent(BasicAgent): method __init__ (line 25) | def __init__( method get_prompter (line 49) | def get_prompter( method message_constructor (line 65) | def message_constructor( method status_manager (line 89) | def status_manager(self) -> EvaluatonAgentStatus: method context_provision (line 96) | def context_provision(self, context: Context) -> None: method evaluate (line 113) | def evaluate( method process_confirmation (line 139) | def process_confirmation(self) -> None: method print_response (line 145) | def print_response(self, response_dict: Dict[str, str]) -> None: FILE: ufo/agents/agent/host_agent.py class RunningMode (line 34) | class RunningMode(str, Enum): class AgentConfigResolver (line 42) | class AgentConfigResolver: method resolve_app_agent_config (line 46) | def resolve_app_agent_config( method resolve_operator_agent_config (line 78) | def resolve_operator_agent_config( method resolve_third_party_config (line 97) | def resolve_third_party_config( class AgentFactory (line 115) | class AgentFactory: method create_agent (line 121) | def create_agent(agent_type: str, *args, **kwargs) -> BasicAgent: class HostAgent (line 143) | class HostAgent(BasicAgent): method __init__ (line 148) | def __init__( method get_prompter (line 180) | def get_prompter( method sub_agent_amount (line 198) | def sub_agent_amount(self) -> int: method get_active_appagent (line 205) | def get_active_appagent(self) -> AppAgent: method blackboard (line 213) | def blackboard(self) -> Blackboard: method message_constructor (line 219) | def message_constructor( method process (line 257) | async def process(self, context: Context) -> None: method context_provision (line 276) | async def context_provision(self, context: Context) -> None: method _load_mcp_context (line 283) | async def _load_mcp_context(self, context: Context) -> None: method create_subagent (line 313) | def create_subagent(self, context: Optional["Context"] = None) -> None: method process_confirmation (line 365) | def process_confirmation(self) -> None: method _display_agent_comment (line 371) | def _display_agent_comment(self, comment: str) -> None: method print_response (line 416) | def print_response(self, response: HostAgentResponse) -> None: method status_manager (line 433) | def status_manager(self) -> HostAgentStatus: method default_state (line 440) | def default_state(self) -> ContinueHostAgentState: FILE: ufo/agents/memory/blackboard.py class ImageMemoryItemNames (line 17) | class ImageMemoryItemNames: class ImageMemoryItem (line 28) | class ImageMemoryItem(MemoryItem): class Blackboard (line 36) | class Blackboard: method __init__ (line 41) | def __init__(self) -> None: method questions (line 56) | def questions(self) -> Memory: method requests (line 64) | def requests(self) -> Memory: method trajectories (line 72) | def trajectories(self) -> Memory: method screenshots (line 80) | def screenshots(self) -> Memory: method add_data (line 87) | def add_data( method add_questions (line 109) | def add_questions(self, questions: Union[MemoryItem, Dict[str, str]]) ... method add_requests (line 117) | def add_requests(self, requests: Union[MemoryItem, Dict[str, str]]) ->... method add_trajectories (line 125) | def add_trajectories(self, trajectories: Union[MemoryItem, Dict[str, s... method add_image (line 133) | def add_image( method questions_to_json (line 164) | def questions_to_json(self) -> str: method requests_to_json (line 171) | def requests_to_json(self) -> str: method trajectories_to_json (line 178) | def trajectories_to_json(self) -> str: method screenshots_to_json (line 185) | def screenshots_to_json(self) -> str: method load_questions (line 192) | def load_questions(self, file_path: str, last_k=-1) -> None: method texts_to_prompt (line 202) | def texts_to_prompt(self, memory: Memory, prefix: str) -> List[str]: method screenshots_to_prompt (line 214) | def screenshots_to_prompt(self) -> List[str]: method blackboard_to_dict (line 241) | def blackboard_to_dict(self) -> Dict[str, List[Dict[str, str]]]: method blackboard_to_json (line 255) | def blackboard_to_json(self) -> str: method blackboard_from_dict (line 262) | def blackboard_from_dict( method blackboard_to_prompt (line 274) | def blackboard_to_prompt(self) -> List[str]: method is_empty (line 298) | def is_empty(self) -> bool: method clear (line 310) | def clear(self) -> None: method read_json_file (line 320) | def read_json_file(file_path: str, last_k=-1) -> Dict[str, str]: FILE: ufo/agents/memory/memory.py class MemoryItem (line 12) | class MemoryItem: method to_dict (line 19) | def to_dict(self) -> Dict[str, str]: method from_dict (line 31) | def from_dict(self, data: Dict[str, str]) -> None: method to_json (line 39) | def to_json(self) -> str: method filter (line 46) | def filter(self, keys: List[str] = []) -> None: method set_value (line 55) | def set_value(self, key: str, value: str) -> None: method add_values_from_dict (line 66) | def add_values_from_dict(self, values: Dict[str, Any]) -> None: method get_value (line 74) | def get_value(self, key: str) -> Optional[str]: method get_values (line 83) | def get_values(self, keys: List[str]) -> dict: method attributes (line 92) | def attributes(self) -> List[str]: class Memory (line 101) | class Memory: method load (line 108) | def load(self, content: List[MemoryItem]) -> None: method filter_memory_from_steps (line 115) | def filter_memory_from_steps(self, steps: List[int]) -> List[Dict[str,... method filter_memory_from_keys (line 123) | def filter_memory_from_keys(self, keys: List[str]) -> List[Dict[str, s... method add_memory_item (line 131) | def add_memory_item(self, memory_item: MemoryItem) -> None: method clear (line 138) | def clear(self) -> None: method length (line 145) | def length(self) -> int: method delete_memory_item (line 152) | def delete_memory_item(self, step: int) -> None: method to_json (line 159) | def to_json(self) -> str: method to_list_of_dicts (line 169) | def to_list_of_dicts(self) -> List[Dict[str, str]]: method from_list_of_dicts (line 176) | def from_list_of_dicts(self, data: List[Dict[str, str]]) -> None: method get_latest_item (line 187) | def get_latest_item(self) -> MemoryItem: method content (line 197) | def content(self) -> List[MemoryItem]: method list_content (line 205) | def list_content(self) -> List[Dict[str, str]]: method is_empty (line 212) | def is_empty(self) -> bool: FILE: ufo/agents/presenters/base_presenter.py class BasePresenter (line 15) | class BasePresenter(ABC): method present_response (line 27) | def present_response(self, response: Any, **kwargs) -> None: method present_thought (line 37) | def present_thought(self, thought: str) -> None: method present_observation (line 46) | def present_observation(self, observation: str) -> None: method present_status (line 55) | def present_status(self, status: str, **kwargs) -> None: method present_actions (line 65) | def present_actions(self, actions: Any, **kwargs) -> None: method present_plan (line 75) | def present_plan(self, plan: List[str]) -> None: method present_comment (line 84) | def present_comment(self, comment: Optional[str]) -> None: method present_results (line 93) | def present_results(self, results: Any) -> None: FILE: ufo/agents/presenters/presenter_factory.py class PresenterFactory (line 19) | class PresenterFactory: method create_presenter (line 38) | def create_presenter( method register_presenter (line 65) | def register_presenter(cls, presenter_type: str, presenter_class: type... method get_available_presenters (line 85) | def get_available_presenters(cls) -> list: FILE: ufo/agents/presenters/rich_presenter.py class RichPresenter (line 31) | class RichPresenter(BasePresenter): method __init__ (line 83) | def __init__(self, console: Optional[Console] = None): method _safe_text (line 91) | def _safe_text(self, text: str) -> str: method present_response (line 100) | def present_response(self, response: Any, **kwargs) -> None: method present_thought (line 112) | def present_thought(self, thought: str) -> None: method present_observation (line 127) | def present_observation(self, observation: str) -> None: method present_status (line 142) | def present_status(self, status: str, **kwargs) -> None: method present_actions (line 172) | def present_actions(self, actions: Any, **kwargs) -> None: method present_plan (line 182) | def present_plan(self, plan: List[str]) -> None: method present_comment (line 198) | def present_comment(self, comment: Optional[str]) -> None: method present_results (line 207) | def present_results(self, results: Any) -> None: method _print_response_header (line 230) | def _print_response_header(self, agent_type: str) -> None: method _print_response_footer (line 252) | def _print_response_footer(self) -> None: method present_app_agent_response (line 275) | def present_app_agent_response( method _present_actions_as_table (line 335) | def _present_actions_as_table(self, actions: List[Any]) -> None: method present_host_agent_response (line 369) | def present_host_agent_response( method _format_action_string (line 464) | def _format_action_string(self, function: str, arguments: Dict[str, An... method present_constellation_agent_response (line 480) | def present_constellation_agent_response( method _present_constellation_info (line 551) | def _present_constellation_info(self, constellation: Any) -> None: method present_action_list (line 654) | def present_action_list(self, actions: Any, success_only: bool = False... method present_constellation_editing_actions (line 719) | def present_constellation_editing_actions(self, actions: Any) -> None: method _print_single_constellation_action (line 761) | def _print_single_constellation_action(self, idx: int, action: Any) ->... method _format_constellation_operation (line 808) | def _format_constellation_operation(self, action: Any) -> str: method _print_constellation_summary (line 882) | def _print_constellation_summary( method _display_agent_comment (line 919) | def _display_agent_comment(self, comment: str) -> None: method _print_single_action (line 934) | def _print_single_action(self, idx: int, action: Any) -> None: method _print_action_summary (line 1033) | def _print_action_summary( method present_evaluation_agent_response (line 1086) | def present_evaluation_agent_response( FILE: ufo/agents/processors/app_agent_processor.py function _safe_console_text (line 40) | def _safe_console_text(text: str) -> str: class AppAgentProcessor (line 54) | class AppAgentProcessor(ProcessorTemplate): method __init__ (line 78) | def __init__(self, agent: "AppAgent", global_context: "Context") -> None: method _setup_strategies (line 82) | def _setup_strategies(self) -> None: method _setup_middleware (line 111) | def _setup_middleware(self) -> None: method _get_processor_specific_context_data (line 116) | def _get_processor_specific_context_data(self) -> Dict[str, Any]: class AppAgentLoggingMiddleware (line 132) | class AppAgentLoggingMiddleware(EnhancedLoggingMiddleware): method __init__ (line 144) | def __init__(self) -> None: method before_process (line 148) | async def before_process( method starting_message (line 185) | def starting_message(self, context: ProcessingContext) -> str: method after_process (line 196) | async def after_process( method on_error (line 256) | async def on_error(self, processor: ProcessorTemplate, error: Exceptio... FILE: ufo/agents/processors/context/app_agent_processing_context.py class AppAgentProcessorContext (line 8) | class AppAgentProcessorContext(BasicProcessorContext): method selected_keys (line 94) | def selected_keys(self) -> List[str]: FILE: ufo/agents/processors/context/host_agent_processing_context.py class HostAgentProcessorContext (line 10) | class HostAgentProcessorContext(BasicProcessorContext): method selected_keys (line 59) | def selected_keys(self) -> List[str]: FILE: ufo/agents/processors/context/processing_context.py class ProcessingPhase (line 24) | class ProcessingPhase(Enum): class ProcessingResult (line 38) | class ProcessingResult: class ProcessorContextProtocol (line 50) | class ProcessorContextProtocol(ABC): method to_dict (line 59) | def to_dict(self, selective: bool) -> Dict[str, Any]: method update_from_dict (line 64) | def update_from_dict(self, data: Dict[str, Any]) -> None: method get_context_summary (line 69) | def get_context_summary(self) -> Dict[str, Any]: class BasicProcessorContext (line 75) | class BasicProcessorContext(ProcessorContextProtocol): method to_dict (line 116) | def to_dict(self, selective: bool = True) -> Dict[str, Any]: method selected_keys (line 133) | def selected_keys(self) -> List[str]: method update_from_dict (line 140) | def update_from_dict(self, data: Dict[str, Any]) -> None: method get_context_summary (line 151) | def get_context_summary(self) -> Dict[str, Any]: class ProcessingContext (line 172) | class ProcessingContext: method __post_init__ (line 189) | def __post_init__(self): method __getattr__ (line 196) | def __getattr__(self, name: str) -> Any: method __setattr__ (line 204) | def __setattr__(self, name: str, value: Any) -> None: method get_local (line 223) | def get_local(self, key: str, default: Any = None) -> Any: method set_local (line 245) | def set_local(self, key: str, value: Any) -> None: method update_local (line 261) | def update_local(self, data: Dict[str, Any]) -> None: method local_data (line 270) | def local_data(self) -> Dict[str, Any]: method get_typed_context (line 278) | def get_typed_context(self) -> ProcessorContextType: method update_typed_context (line 285) | def update_typed_context(self, **kwargs) -> None: method get_global (line 298) | def get_global(self, key: str, default: Any = None) -> Any: method set_global (line 323) | def set_global(self, key: str, value: Any) -> None: method get (line 343) | def get(self, key: str, default: Any = None) -> Any: method set_phase_result (line 362) | def set_phase_result( method get_phase_result (line 368) | def get_phase_result(self, phase: ProcessingPhase) -> Optional[Process... method get_all_phase_results (line 372) | def get_all_phase_results(self) -> OrderedDict[ProcessingPhase, Proces... method get_phase_results_summary (line 376) | def get_phase_results_summary(self) -> Dict[str, Any]: method get_phase_results_in_order (line 388) | def get_phase_results_in_order( method get_phase_execution_order (line 394) | def get_phase_execution_order(self) -> List[ProcessingPhase]: method has_phase_completed (line 398) | def has_phase_completed(self, phase: ProcessingPhase) -> bool: method get_successful_phases (line 402) | def get_successful_phases(self) -> List[ProcessingPhase]: method get_failed_phases (line 406) | def get_failed_phases(self) -> List[ProcessingPhase]: method get_context_summary (line 412) | def get_context_summary(self) -> Dict[str, Any]: method add_action_to_history (line 430) | def add_action_to_history(self, action_info: Dict[str, Any]) -> None: method require_local (line 447) | def require_local(self, key: str, expected_type: type = None) -> Any: FILE: ufo/agents/processors/core/processing_middleware.py class ProcessorMiddleware (line 25) | class ProcessorMiddleware(ABC): method __init__ (line 30) | def __init__(self, name: Optional[str] = None): method before_process (line 38) | async def before_process( method after_process (line 49) | async def after_process( method on_error (line 60) | async def on_error(self, processor: "ProcessorTemplate", error: Except... class EnhancedLoggingMiddleware (line 69) | class EnhancedLoggingMiddleware(ProcessorMiddleware): method __init__ (line 74) | def __init__(self, log_level: int = logging.INFO, name: Optional[str] ... method before_process (line 79) | async def before_process( method after_process (line 92) | async def after_process( method on_error (line 130) | async def on_error(self, processor: "ProcessorTemplate", error: Except... FILE: ufo/agents/processors/core/processor_framework.py class ProcessingException (line 27) | class ProcessingException(Exception): method __init__ (line 32) | def __init__( class ProcessorTemplate (line 45) | class ProcessorTemplate(ABC): method __init__ (line 56) | def __init__(self, agent: "BasicAgent", global_context: Context): method _setup_strategies (line 81) | def _setup_strategies(self) -> None: method _setup_middleware (line 88) | def _setup_middleware(self) -> None: method _create_processing_context (line 94) | def _create_processing_context(self) -> ProcessingContext: method get_processor_context_class (line 113) | def get_processor_context_class(self) -> Type[BasicProcessorContext]: method _create_local_context (line 124) | def _create_local_context( method _get_common_context_data (line 164) | def _get_common_context_data(self) -> Dict[str, Any]: method _get_processor_specific_context_data (line 181) | def _get_processor_specific_context_data(self) -> Dict[str, Any]: method _finalize_processing_context (line 192) | def _finalize_processing_context( method _validate_strategy_chain (line 238) | def _validate_strategy_chain(self) -> None: method _validate_strategy_dependencies_runtime (line 265) | def _validate_strategy_dependencies_runtime( method _validate_strategy_provides_runtime (line 312) | def _validate_strategy_provides_runtime( method process (line 336) | async def process(self) -> ProcessingResult: FILE: ufo/agents/processors/core/strategy_dependency.py class StrategyDependency (line 20) | class StrategyDependency: class StrategyMetadataRegistry (line 44) | class StrategyMetadataRegistry: method register_strategy (line 53) | def register_strategy( method get_dependencies (line 74) | def get_dependencies(cls, strategy_class: Type) -> List[StrategyDepend... method get_provides (line 85) | def get_provides(cls, strategy_class: Type) -> List[str]: method is_registered (line 96) | def is_registered(cls, strategy_class: Type) -> bool: method get_all_registered (line 106) | def get_all_registered(cls) -> Dict[str, Dict[str, Any]]: class StrategyMetadata (line 116) | class StrategyMetadata: class DependencyValidationError (line 136) | class DependencyValidationError(Exception): method __init__ (line 139) | def __init__( class DependencyValidationResult (line 148) | class DependencyValidationResult: method report (line 161) | def report(self) -> str: class StrategyDependencyValidator (line 183) | class StrategyDependencyValidator: method __init__ (line 191) | def __init__(self, logger: Optional[logging.Logger] = None): method validate_runtime_dependencies (line 194) | def validate_runtime_dependencies( method validate_strategy_chain (line 234) | def validate_strategy_chain( method validate_strategy_chain_detailed (line 281) | def validate_strategy_chain_detailed( method print_dependency_report (line 382) | def print_dependency_report(self, report: Dict[str, Any]) -> None: function strategy_config (line 439) | def strategy_config( function depends_on (line 481) | def depends_on(*dependencies: str): function provides (line 510) | def provides(*fields: str): function _parse_dependencies (line 536) | def _parse_dependencies( function validate_provides_consistency (line 559) | def validate_provides_consistency( FILE: ufo/agents/processors/customized/customized_agent_processor.py class CustomizedProcessor (line 50) | class CustomizedProcessor(AppAgentProcessor): method __init__ (line 55) | def __init__(self, agent: "CustomizedAgent", global_context: "Context"... method _setup_strategies (line 59) | def _setup_strategies(self) -> None: class HardwareAgentProcessor (line 88) | class HardwareAgentProcessor(CustomizedProcessor): class LinuxAgentProcessor (line 96) | class LinuxAgentProcessor(CustomizedProcessor): method _setup_strategies (line 101) | def _setup_strategies(self) -> None: method _setup_middleware (line 116) | def _setup_middleware(self) -> None: method _finalize_processing_context (line 121) | def _finalize_processing_context( class MobileAgentProcessor (line 142) | class MobileAgentProcessor(CustomizedProcessor): method _setup_strategies (line 148) | def _setup_strategies(self) -> None: method _setup_middleware (line 177) | def _setup_middleware(self) -> None: method _finalize_processing_context (line 182) | def _finalize_processing_context( FILE: ufo/agents/processors/host_agent_processor.py function _safe_console_text (line 53) | def _safe_console_text(text: str) -> str: class HostAgentProcessor (line 66) | class HostAgentProcessor(ProcessorTemplate): method __init__ (line 85) | def __init__(self, agent: "HostAgent", global_context: Context) -> None: method _setup_strategies (line 95) | def _setup_strategies(self) -> None: method _setup_middleware (line 114) | def _setup_middleware(self) -> None: method _get_processor_specific_context_data (line 124) | def _get_processor_specific_context_data(self) -> Dict[str, Any]: method _finalize_processing_context (line 137) | def _finalize_processing_context( class HostAgentLoggingMiddleware (line 186) | class HostAgentLoggingMiddleware(EnhancedLoggingMiddleware): method __init__ (line 197) | def __init__(self) -> None: method before_process (line 201) | async def before_process( method after_process (line 245) | async def after_process( method on_error (line 298) | async def on_error(self, processor: ProcessorTemplate, error: Exceptio... FILE: ufo/agents/processors/schemas/actions.py class BaseControlLog (line 19) | class BaseControlLog: method is_empty (line 32) | def is_empty(self) -> bool: class ActionExecutionLog (line 37) | class ActionExecutionLog: class ActionCommandInfo (line 48) | class ActionCommandInfo(BaseModel): method model_post_init (line 61) | def model_post_init(self, __context: Any) -> None: method to_string (line 68) | def to_string(command_name: str, params: Dict[str, Any]) -> str: method to_representation (line 75) | def to_representation(self) -> str: class ListActionCommandInfo (line 98) | class ListActionCommandInfo: method __init__ (line 103) | def __init__(self, actions: Optional[List[ActionCommandInfo]] = None): method actions (line 112) | def actions(self) -> List[ActionCommandInfo]: method length (line 120) | def length(self) -> int: method status (line 128) | def status(self) -> str: method add_action (line 143) | def add_action(self, action: ActionCommandInfo) -> None: method to_list_of_dicts (line 150) | def to_list_of_dicts( method to_string (line 176) | def to_string( method to_representation (line 191) | def to_representation( method color_print (line 207) | def color_print(self, success_only: bool = False) -> None: method is_same_action (line 218) | def is_same_action( method count_repeat_times (line 243) | def count_repeat_times( method get_results (line 263) | def get_results(self, success_only: bool = False) -> List[Dict[str, An... method get_target_info (line 275) | def get_target_info(self, success_only: bool = False) -> List[Dict[str... method get_target_objects (line 293) | def get_target_objects(self, success_only: bool = False) -> List[Targe... method get_function_calls (line 308) | def get_function_calls(self, is_success_only: bool = False) -> List[str]: FILE: ufo/agents/processors/schemas/log_schema.py class ControlInfoRecorder (line 6) | class ControlInfoRecorder: class HostAgentRequestLog (line 25) | class HostAgentRequestLog: class AppAgentRequestLog (line 41) | class AppAgentRequestLog: FILE: ufo/agents/processors/schemas/response_schema.py class HostAgentResponse (line 8) | class HostAgentResponse(BaseModel): class AppAgentResponse (line 26) | class AppAgentResponse(BaseModel): class EvaluationAgentResponse (line 40) | class EvaluationAgentResponse(BaseModel): FILE: ufo/agents/processors/schemas/target.py class TargetKind (line 8) | class TargetKind(str, Enum): class TargetInfo (line 18) | class TargetInfo(BaseModel): class TargetRegistry (line 32) | class TargetRegistry: method __init__ (line 37) | def __init__(self) -> None: method register (line 45) | def register(self, target: Union[TargetInfo, List[TargetInfo]]) -> Lis... method register_from_dict (line 70) | def register_from_dict(self, target_dict: Dict[str, Any]) -> TargetInfo: method register_from_dicts (line 85) | def register_from_dicts( method get (line 95) | def get(self, target_id: str) -> Optional[TargetInfo]: method find_by_name (line 103) | def find_by_name(self, name: str) -> List[TargetInfo]: method find_by_id (line 111) | def find_by_id(self, target_id: str) -> Optional[TargetInfo]: method find_by_kind (line 119) | def find_by_kind(self, kind: TargetKind) -> List[TargetInfo]: method all_targets (line 127) | def all_targets(self) -> List[TargetInfo]: method unregister (line 134) | def unregister(self, target_id: str) -> bool: method to_list (line 145) | def to_list(self, keep_keys: Optional[List[str]] = None) -> List[Dict[... method clear (line 159) | def clear(self) -> None: FILE: ufo/agents/processors/strategies/app_agent_processing_strategy.py class AppScreenshotCaptureStrategy (line 79) | class AppScreenshotCaptureStrategy(BaseProcessingStrategy): method __init__ (line 90) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 97) | async def execute( method _capture_app_screenshot (line 179) | async def _capture_app_screenshot( method _get_application_window_info (line 249) | async def _get_application_window_info( method _capture_ui_tree (line 292) | async def _capture_ui_tree( method _capture_desktop_screenshot (line 334) | async def _capture_desktop_screenshot( class AppControlInfoStrategy (line 434) | class AppControlInfoStrategy(BaseProcessingStrategy): method __init__ (line 445) | def __init__(self, fail_fast: bool = True) -> None: method _init_omniparser_service (line 460) | def _init_omniparser_service(self) -> Optional[OmniparserGrounding]: method execute (line 475) | async def execute( method _create_annotation_dict (line 577) | def _create_annotation_dict( method _collect_uia_controls (line 587) | async def _collect_uia_controls( method _collect_grounding_controls (line 628) | async def _collect_grounding_controls( method _collect_merged_control_list (line 660) | async def _collect_merged_control_list( method _find_added_controls (line 711) | def _find_added_controls( method _send_add_control_list_command (line 734) | async def _send_add_control_list_command( method _save_annotated_screenshot (line 774) | def _save_annotated_screenshot( class AppLLMInteractionStrategy (line 824) | class AppLLMInteractionStrategy(BaseProcessingStrategy): method __init__ (line 835) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 842) | async def execute( method _collect_image_strings (line 955) | def _collect_image_strings( method _get_prev_plan (line 999) | def _get_prev_plan(self, agent: "AppAgent") -> List[str]: method _knowledge_retrieval (line 1019) | def _knowledge_retrieval(self, agent: "AppAgent", subtask: str): method _build_app_prompt (line 1045) | async def _build_app_prompt( method _get_last_success_actions (line 1131) | def _get_last_success_actions(self, agent: "AppAgent") -> List[Dict]: method _log_request_data (line 1155) | def _log_request_data( method _get_llm_response (line 1221) | async def _get_llm_response( method _parse_app_response (line 1271) | def _parse_app_response( class AppActionExecutionStrategy (line 1307) | class AppActionExecutionStrategy(BaseProcessingStrategy): method __init__ (line 1318) | def __init__(self, fail_fast: bool = False) -> None: method execute (line 1325) | async def execute( method _execute_app_action (line 1405) | async def _execute_app_action( method _action_to_command (line 1444) | def _action_to_command(self, action: ActionCommandInfo) -> Command: method _create_action_info (line 1456) | def _create_action_info( method _save_annotated_screenshot (line 1500) | def _save_annotated_screenshot( class AppMemoryUpdateStrategy (line 1543) | class AppMemoryUpdateStrategy(BaseProcessingStrategy): method __init__ (line 1554) | def __init__(self, fail_fast: bool = False) -> None: method execute (line 1561) | async def execute( method _get_all_success_actions (line 1623) | def _get_all_success_actions(self, agent: "AppAgent") -> List[Dict[str... method _create_additional_memory_data (line 1643) | def _create_additional_memory_data( method _create_and_populate_memory_item (line 1706) | def _create_and_populate_memory_item( method _update_blackboard (line 1732) | def _update_blackboard( method _update_structural_logs (line 1773) | def _update_structural_logs( FILE: ufo/agents/processors/strategies/customized_agent_processing_strategy.py class CustomizedScreenshotCaptureStrategy (line 47) | class CustomizedScreenshotCaptureStrategy(BaseProcessingStrategy): method __init__ (line 57) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 64) | async def execute( method _capture_screenshot (line 117) | async def _capture_screenshot( class CustomizedLLMInteractionStrategy (line 171) | class CustomizedLLMInteractionStrategy(AppLLMInteractionStrategy): method _collect_image_strings (line 182) | def _collect_image_strings( FILE: ufo/agents/processors/strategies/host_agent_processing_strategy.py class DesktopDataCollectionStrategy (line 62) | class DesktopDataCollectionStrategy(BaseProcessingStrategy): method __init__ (line 73) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 80) | async def execute( method _capture_desktop_screenshot (line 137) | async def _capture_desktop_screenshot( method _get_desktop_application_info (line 230) | async def _get_desktop_application_info( method _register_applications_and_agents (line 269) | def _register_applications_and_agents( method _register_third_party_agents (line 301) | def _register_third_party_agents( class HostLLMInteractionStrategy (line 356) | class HostLLMInteractionStrategy(BaseProcessingStrategy): method __init__ (line 367) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 374) | async def execute( method _get_prev_plan (line 449) | def _get_prev_plan(self, agent: "HostAgent") -> List[str]: method _build_comprehensive_prompt (line 468) | async def _build_comprehensive_prompt( method _log_request_data (line 531) | def _log_request_data( method _get_llm_response_with_retry (line 577) | async def _get_llm_response_with_retry( method _parse_and_validate_response (line 628) | def _parse_and_validate_response( method _validate_response_fields (line 656) | def _validate_response_fields(self, response: HostAgentResponse) -> None: method _extract_structured_response_data (line 677) | def _extract_structured_response_data( class HostActionExecutionStrategy (line 714) | class HostActionExecutionStrategy(BaseProcessingStrategy): method __init__ (line 728) | def __init__(self, fail_fast: bool = False) -> None: method execute (line 735) | async def execute( method _execute_application_selection (line 826) | async def _execute_application_selection( method _select_third_party_agent (line 872) | async def _select_third_party_agent(self, target: TargetInfo) -> List[... method _select_regular_application (line 900) | async def _select_regular_application( method _execute_generic_command (line 941) | async def _execute_generic_command( method _create_action_info (line 986) | def _create_action_info( class HostMemoryUpdateStrategy (line 1040) | class HostMemoryUpdateStrategy(BaseProcessingStrategy): method __init__ (line 1051) | def __init__(self, fail_fast: bool = False) -> None: method execute (line 1058) | async def execute( method _create_additional_memory_data (line 1109) | def _create_additional_memory_data( method _calculate_time_costs (line 1167) | def _calculate_time_costs(self) -> Dict[str, float]: method _create_control_log (line 1184) | def _create_control_log( method _create_and_populate_memory_item (line 1210) | def _create_and_populate_memory_item( method _update_structural_logs (line 1241) | def _update_structural_logs(self, memory_item: MemoryItem, global_cont... method _update_blackboard_trajectories (line 1254) | def _update_blackboard_trajectories( FILE: ufo/agents/processors/strategies/linux_agent_strategy.py class LinuxLLMInteractionStrategy (line 37) | class LinuxLLMInteractionStrategy(AppLLMInteractionStrategy): method __init__ (line 48) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 55) | async def execute( class LinuxActionExecutionStrategy (line 115) | class LinuxActionExecutionStrategy(AppActionExecutionStrategy): method __init__ (line 124) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 131) | async def execute( method _create_action_info (line 193) | def _create_action_info( class LinuxLoggingMiddleware (line 231) | class LinuxLoggingMiddleware(AppAgentLoggingMiddleware): method starting_message (line 236) | def starting_message(self, context: ProcessingContext) -> str: FILE: ufo/agents/processors/strategies/mobile_agent_strategy.py class MobileScreenshotCaptureStrategy (line 54) | class MobileScreenshotCaptureStrategy(BaseProcessingStrategy): method __init__ (line 64) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 71) | async def execute( method _capture_screenshot (line 130) | async def _capture_screenshot( class MobileAppsCollectionStrategy (line 176) | class MobileAppsCollectionStrategy(BaseProcessingStrategy): method __init__ (line 186) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 193) | async def execute( method _target_info_to_dict (line 269) | def _target_info_to_dict(self, target_info: TargetInfo) -> Dict[str, A... method _dict_to_app_dict (line 281) | def _dict_to_app_dict(self, app_dict: Dict[str, Any]) -> Dict[str, Any]: class MobileControlsCollectionStrategy (line 302) | class MobileControlsCollectionStrategy(BaseProcessingStrategy): method __init__ (line 313) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 321) | async def execute( method _target_info_to_dict (line 449) | def _target_info_to_dict(self, target_info: TargetInfo) -> Dict[str, A... method _dict_to_control_dict (line 464) | def _dict_to_control_dict(self, control_dict: Dict[str, Any]) -> Dict[... method _controls_to_target_info_list (line 501) | def _controls_to_target_info_list(self, controls_data: List) -> List[T... method _save_annotated_screenshot (line 565) | def _save_annotated_screenshot( class MobileLLMInteractionStrategy (line 618) | class MobileLLMInteractionStrategy(AppLLMInteractionStrategy): method __init__ (line 629) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 636) | async def execute( class MobileActionExecutionStrategy (line 705) | class MobileActionExecutionStrategy(AppActionExecutionStrategy): method __init__ (line 714) | def __init__(self, fail_fast: bool = True) -> None: method execute (line 721) | async def execute( method _create_action_info (line 782) | def _create_action_info( class MobileLoggingMiddleware (line 819) | class MobileLoggingMiddleware(AppAgentLoggingMiddleware): method starting_message (line 824) | def starting_message(self, context: ProcessingContext) -> str: FILE: ufo/agents/processors/strategies/processing_strategy.py class ProcessingStrategy (line 17) | class ProcessingStrategy(Protocol): method execute (line 24) | async def execute( class BaseProcessingStrategy (line 29) | class BaseProcessingStrategy(ABC): method __init__ (line 34) | def __init__(self, name: Optional[str] = None, fail_fast: bool = True): method get_dependencies (line 44) | def get_dependencies(self) -> List["StrategyDependency"]: method get_provides (line 53) | def get_provides(self) -> List[str]: method validate_dependencies (line 62) | def validate_dependencies(self, context: ProcessingContext) -> List[str]: method require_dependency (line 82) | def require_dependency( method execute (line 97) | async def execute( method handle_error (line 108) | def handle_error( class ComposedStrategy (line 140) | class ComposedStrategy(BaseProcessingStrategy): method __init__ (line 156) | def __init__( method _collect_strategy_metadata (line 185) | def _collect_strategy_metadata(self) -> None: method get_dependencies (line 206) | def get_dependencies(self) -> List["StrategyDependency"]: method get_provides (line 214) | def get_provides(self) -> List[str]: method execute (line 222) | async def execute(self, agent, context: ProcessingContext) -> Processi... FILE: ufo/agents/processors/strategies/strategy_dependency.py class StrategyDependency (line 19) | class StrategyDependency: class DependencyValidationError (line 40) | class DependencyValidationError(Exception): method __init__ (line 43) | def __init__( class StrategyDependencyValidator (line 51) | class StrategyDependencyValidator: method __init__ (line 59) | def __init__(self, logger: Optional[logging.Logger] = None): method validate_execution_dependencies (line 62) | def validate_execution_dependencies( method validate_strategy_chain (line 107) | def validate_strategy_chain( method print_dependency_report (line 200) | def print_dependency_report(self, report: Dict[str, Any]) -> None: FILE: ufo/agents/states/app_agent_state.py class AppAgentStatus (line 30) | class AppAgentStatus(Enum): class AppAgentStateManager (line 44) | class AppAgentStateManager(AgentStateManager): method none_state (line 49) | def none_state(self) -> AgentState: class AppAgentState (line 56) | class AppAgentState(AgentState): method handle (line 61) | async def handle( method agent_class (line 72) | def agent_class(cls) -> Type[AppAgent]: method next_agent (line 83) | def next_agent(self, agent: "AppAgent") -> BasicAgent: method next_state (line 91) | def next_state(self, agent: "AppAgent") -> AppAgentState: method archive_subtask (line 102) | async def archive_subtask( method is_round_end (line 119) | def is_round_end(self) -> bool: class FinishAppAgentState (line 128) | class FinishAppAgentState(AppAgentState): method handle (line 133) | async def handle( method next_agent (line 149) | def next_agent(self, agent: "AppAgent") -> HostAgent: method next_state (line 157) | def next_state(self, agent: "AppAgent") -> HostAgentState: method is_subtask_end (line 169) | def is_subtask_end(self) -> bool: method name (line 177) | def name(cls) -> str: class ContinueAppAgentState (line 186) | class ContinueAppAgentState(AppAgentState): method handle (line 191) | async def handle( method is_subtask_end (line 202) | def is_subtask_end(self) -> bool: method name (line 210) | def name(cls) -> str: class ScreenshotAppAgentState (line 219) | class ScreenshotAppAgentState(ContinueAppAgentState): method name (line 225) | def name(cls) -> str: method next_state (line 232) | def next_state(self, agent: BasicAgent) -> AgentState: method is_subtask_end (line 249) | def is_subtask_end(self) -> bool: class PendingAppAgentState (line 258) | class PendingAppAgentState(AppAgentState): method handle (line 263) | async def handle( method next_state (line 275) | def next_state(self, agent: AppAgent) -> AppAgentState: method is_subtask_end (line 284) | def is_subtask_end(self) -> bool: method name (line 292) | def name(cls) -> str: class ConfirmAppAgentState (line 301) | class ConfirmAppAgentState(AppAgentState): method __init__ (line 306) | def __init__(self) -> None: method handle (line 312) | async def handle( method next_state (line 333) | def next_state(self, agent: AppAgent) -> AppAgentState: method is_subtask_end (line 347) | def is_subtask_end(self) -> bool: method name (line 355) | def name(cls) -> str: class ErrorAppAgentState (line 364) | class ErrorAppAgentState(AppAgentState): method handle (line 369) | async def handle( method next_agent (line 387) | def next_agent(self, agent: "AppAgent") -> HostAgent: method next_state (line 395) | def next_state(self, agent: "AppAgent") -> HostAgentState: method is_round_end (line 403) | def is_round_end(self) -> bool: method is_subtask_end (line 410) | def is_subtask_end(self) -> bool: method name (line 418) | def name(cls) -> str: class FailAppAgentState (line 427) | class FailAppAgentState(AppAgentState): method handle (line 432) | async def handle( method next_agent (line 450) | def next_agent(self, agent: "AppAgent") -> HostAgent: method next_state (line 458) | def next_state(self, agent: "AppAgent") -> HostAgentState: method is_round_end (line 466) | def is_round_end(self) -> bool: method is_subtask_end (line 473) | def is_subtask_end(self) -> bool: method name (line 481) | def name(cls) -> str: class NoneAppAgentState (line 490) | class NoneAppAgentState(AppAgentState): method next_agent (line 495) | def next_agent(self, agent: "AppAgent") -> HostAgent: method next_state (line 503) | def next_state(self, agent: "AppAgent") -> HostAgentState: method is_subtask_end (line 511) | def is_subtask_end(self) -> bool: method name (line 519) | def name(cls) -> str: FILE: ufo/agents/states/basic.py class SingletonMeta (line 17) | class SingletonMeta(type): method __call__ (line 24) | def __call__(cls, *args, **kwargs): class SingletonABCMeta (line 31) | class SingletonABCMeta(SingletonMeta, ABCMeta): class AgentStatus (line 35) | class AgentStatus(Enum): class AgentStateManager (line 49) | class AgentStateManager(ABC, metaclass=SingletonABCMeta): method __init__ (line 56) | def __init__(self): method get_state (line 63) | def get_state(self, status: str) -> AgentState: method add_state (line 82) | def add_state(self, status: str, state: AgentState) -> None: method state_map (line 91) | def state_map(self) -> Dict[str, AgentState]: method register (line 99) | def register(cls, state_class: Type[AgentState]) -> Type[AgentState]: method none_state (line 110) | def none_state(self) -> AgentState: class AgentState (line 117) | class AgentState(ABC): method handle (line 123) | async def handle( method next_agent (line 134) | def next_agent(self, agent: BasicAgent) -> BasicAgent: method next_state (line 143) | def next_state(self, agent: BasicAgent) -> AgentState: method is_round_end (line 152) | def is_round_end(self) -> bool: method is_subtask_end (line 160) | def is_subtask_end(self) -> bool: method agent_class (line 169) | def agent_class(cls) -> Type[BasicAgent]: method name (line 178) | def name(cls) -> str: FILE: ufo/agents/states/evaluaton_agent_state.py class EvaluatonAgentStatus (line 17) | class EvaluatonAgentStatus(Enum): class EvaluationAgentStateManager (line 26) | class EvaluationAgentStateManager(AgentStateManager): method none_state (line 29) | def none_state(self) -> AgentState: class EvaluatonAgentState (line 36) | class EvaluatonAgentState(AgentState): method agent_class (line 42) | def agent_class(cls) -> Type[EvaluationAgent]: class ContinueEvaluatonAgentState (line 50) | class ContinueEvaluatonAgentState(EvaluatonAgentState): method handle (line 55) | def handle( method next_agent (line 65) | def next_agent(self, agent: EvaluationAgent) -> HostAgent: method is_round_end (line 73) | def is_round_end(self) -> bool: method none_state (line 81) | def none_state(self) -> AgentState: method name (line 89) | def name(cls) -> str: class NoneEvaluatonAgentState (line 98) | class NoneEvaluatonAgentState(EvaluatonAgentState): method handle (line 103) | def handle( method next_agent (line 113) | def next_agent(self, agent: EvaluationAgent) -> HostAgent: method is_round_end (line 121) | def is_round_end(self) -> bool: method name (line 129) | def name(cls) -> str: FILE: ufo/agents/states/host_agent_state.py class HostAgentStatus (line 21) | class HostAgentStatus(Enum): class HostAgentStateManager (line 35) | class HostAgentStateManager(AgentStateManager): method none_state (line 43) | def none_state(self) -> AgentState: class HostAgentState (line 50) | class HostAgentState(AgentState): method handle (line 55) | async def handle( method agent_class (line 66) | def agent_class(cls) -> Type[HostAgent]: method next_state (line 74) | def next_state(self, agent: "HostAgent") -> AgentState: method next_agent (line 84) | def next_agent(self, agent: "HostAgent") -> HostAgent: method is_subtask_end (line 92) | def is_subtask_end(self) -> bool: class FinishHostAgentState (line 101) | class FinishHostAgentState(HostAgentState): method is_round_end (line 106) | def is_round_end(self) -> bool: method name (line 114) | def name(cls) -> str: class ContinueHostAgentState (line 123) | class ContinueHostAgentState(HostAgentState): method handle (line 128) | async def handle( method next_state (line 138) | def next_state(self, agent: "HostAgent") -> AppAgentState: method next_agent (line 150) | def next_agent(self, agent: "HostAgent") -> AppAgent: method is_round_end (line 159) | def is_round_end(self) -> bool: method name (line 167) | def name(cls) -> str: class AssignHostAgentState (line 176) | class AssignHostAgentState(HostAgentState): method handle (line 181) | async def handle( method next_state (line 191) | def next_state(self, agent: "HostAgent") -> AppAgentState: method next_agent (line 215) | def next_agent(self, agent: "HostAgent") -> AppAgent: method is_round_end (line 224) | def is_round_end(self) -> bool: method name (line 232) | def name(cls) -> str: class PendingHostAgentState (line 241) | class PendingHostAgentState(HostAgentState): method handle (line 246) | async def handle( method is_round_end (line 258) | def is_round_end(self) -> bool: method next_state (line 265) | def next_state(self, agent: HostAgent) -> AgentState: method name (line 275) | def name(cls) -> str: class ErrorHostAgentState (line 284) | class ErrorHostAgentState(HostAgentState): method is_round_end (line 289) | def is_round_end(self) -> bool: method next_state (line 296) | def next_state(self, agent: HostAgent) -> AgentState: method name (line 305) | def name(cls) -> str: class FailHostAgentState (line 314) | class FailHostAgentState(HostAgentState): method is_round_end (line 319) | def is_round_end(self) -> bool: method next_state (line 326) | def next_state(self, agent: HostAgent) -> AgentState: method name (line 335) | def name(cls) -> str: class NoneHostAgentState (line 344) | class NoneHostAgentState(HostAgentState): method is_round_end (line 349) | def is_round_end(self) -> bool: method name (line 357) | def name(cls) -> str: FILE: ufo/agents/states/linux_agent_state.py class LinuxAgentStatus (line 21) | class LinuxAgentStatus(Enum): class LinuxAgentStateManager (line 31) | class LinuxAgentStateManager(AgentStateManager): method none_state (line 36) | def none_state(self) -> AgentState: class LinuxAgentState (line 43) | class LinuxAgentState(AgentState): method handle (line 48) | async def handle( method agent_class (line 59) | def agent_class(cls) -> Type[LinuxAgent]: method next_agent (line 70) | def next_agent(self, agent: "LinuxAgent") -> "LinuxAgent": method next_state (line 78) | def next_state(self, agent: "LinuxAgent") -> LinuxAgentState: method is_round_end (line 89) | def is_round_end(self) -> bool: class FinishLinuxAgentState (line 98) | class FinishLinuxAgentState(LinuxAgentState): method next_agent (line 103) | def next_agent(self, agent: "LinuxAgent") -> "LinuxAgent": method next_state (line 111) | def next_state(self, agent: "LinuxAgent") -> LinuxAgentState: method is_subtask_end (line 119) | def is_subtask_end(self) -> bool: method is_round_end (line 126) | def is_round_end(self) -> bool: method name (line 134) | def name(cls) -> str: class ContinueLinuxAgentState (line 143) | class ContinueLinuxAgentState(LinuxAgentState): method handle (line 148) | async def handle( method is_subtask_end (line 159) | def is_subtask_end(self) -> bool: method name (line 167) | def name(cls) -> str: class FailLinuxAgentState (line 176) | class FailLinuxAgentState(LinuxAgentState): method next_agent (line 181) | def next_agent(self, agent: "LinuxAgent") -> "LinuxAgent": method next_state (line 189) | def next_state(self, agent: "LinuxAgent") -> LinuxAgentState: method is_round_end (line 197) | def is_round_end(self) -> bool: method is_subtask_end (line 204) | def is_subtask_end(self) -> bool: method name (line 212) | def name(cls) -> str: class NoneLinuxAgentState (line 221) | class NoneLinuxAgentState(LinuxAgentState): method next_agent (line 226) | def next_agent(self, agent: "LinuxAgent") -> "LinuxAgent": method next_state (line 234) | def next_state(self, agent: "LinuxAgent") -> LinuxAgentState: method is_subtask_end (line 242) | def is_subtask_end(self) -> bool: method is_round_end (line 249) | def is_round_end(self) -> bool: method name (line 257) | def name(cls) -> str: FILE: ufo/agents/states/mobile_agent_state.py class MobileAgentStatus (line 21) | class MobileAgentStatus(Enum): class MobileAgentStateManager (line 31) | class MobileAgentStateManager(AgentStateManager): method none_state (line 36) | def none_state(self) -> AgentState: class MobileAgentState (line 43) | class MobileAgentState(AgentState): method handle (line 48) | async def handle( method agent_class (line 59) | def agent_class(cls) -> Type[MobileAgent]: method next_agent (line 70) | def next_agent(self, agent: "MobileAgent") -> "MobileAgent": method next_state (line 78) | def next_state(self, agent: "MobileAgent") -> MobileAgentState: method is_round_end (line 89) | def is_round_end(self) -> bool: class FinishMobileAgentState (line 98) | class FinishMobileAgentState(MobileAgentState): method next_agent (line 103) | def next_agent(self, agent: "MobileAgent") -> "MobileAgent": method next_state (line 111) | def next_state(self, agent: "MobileAgent") -> MobileAgentState: method is_subtask_end (line 119) | def is_subtask_end(self) -> bool: method is_round_end (line 126) | def is_round_end(self) -> bool: method name (line 134) | def name(cls) -> str: class ContinueMobileAgentState (line 143) | class ContinueMobileAgentState(MobileAgentState): method handle (line 148) | async def handle( method is_subtask_end (line 159) | def is_subtask_end(self) -> bool: method name (line 167) | def name(cls) -> str: class FailMobileAgentState (line 176) | class FailMobileAgentState(MobileAgentState): method next_agent (line 181) | def next_agent(self, agent: "MobileAgent") -> "MobileAgent": method next_state (line 189) | def next_state(self, agent: "MobileAgent") -> MobileAgentState: method is_round_end (line 197) | def is_round_end(self) -> bool: method is_subtask_end (line 204) | def is_subtask_end(self) -> bool: method name (line 212) | def name(cls) -> str: class NoneMobileAgentState (line 221) | class NoneMobileAgentState(MobileAgentState): method next_agent (line 226) | def next_agent(self, agent: "MobileAgent") -> "MobileAgent": method next_state (line 234) | def next_state(self, agent: "MobileAgent") -> MobileAgentState: method is_subtask_end (line 242) | def is_subtask_end(self) -> bool: method is_round_end (line 249) | def is_round_end(self) -> bool: method name (line 257) | def name(cls) -> str: FILE: ufo/agents/states/operator_state.py class OpenAIOperatorStatus (line 29) | class OpenAIOperatorStatus(Enum): class OpenAIOperatorStateManager (line 42) | class OpenAIOperatorStateManager(AgentStateManager): method none_state (line 47) | def none_state(self) -> AgentState: class OpenAIOperatorState (line 54) | class OpenAIOperatorState(AgentState): method handle (line 59) | def handle( method agent_class (line 70) | def agent_class(cls) -> Type[OpenAIOperatorAgent]: method next_agent (line 81) | def next_agent(self, agent: "OpenAIOperatorAgent") -> BasicAgent: method next_state (line 89) | def next_state(self, agent: "OpenAIOperatorAgent") -> OpenAIOperatorSt... method archive_subtask (line 100) | def archive_subtask(self, context: "Context") -> None: method is_round_end (line 114) | def is_round_end(self) -> bool: class AllFinishOpenAIOperatorState (line 123) | class AllFinishOpenAIOperatorState(OpenAIOperatorState): method is_round_end (line 128) | def is_round_end(self) -> bool: method is_subtask_end (line 135) | def is_subtask_end(self) -> bool: method name (line 143) | def name(cls) -> str: class FinishOpenAIOperatorState (line 152) | class FinishOpenAIOperatorState(OpenAIOperatorState): method handle (line 157) | def handle( method next_agent (line 167) | def next_agent(self, agent: "OpenAIOperatorAgent") -> HostAgent: method next_state (line 175) | def next_state(self, agent: "OpenAIOperatorAgent") -> HostAgentState: method is_subtask_end (line 189) | def is_subtask_end(self) -> bool: method name (line 197) | def name(cls) -> str: class ContinueOpenAIOperatorState (line 206) | class ContinueOpenAIOperatorState(OpenAIOperatorState): method handle (line 211) | def handle( method is_subtask_end (line 221) | def is_subtask_end(self) -> bool: method name (line 229) | def name(cls) -> str: class PendingOpenAIOperatorState (line 238) | class PendingOpenAIOperatorState(OpenAIOperatorState): method handle (line 243) | def handle( method next_state (line 255) | def next_state(self, agent: OpenAIOperatorAgent) -> OpenAIOperatorState: method is_subtask_end (line 264) | def is_subtask_end(self) -> bool: method name (line 272) | def name(cls) -> str: class ConfirmOpenAIOperatorState (line 281) | class ConfirmOpenAIOperatorState(OpenAIOperatorState): method __init__ (line 286) | def __init__(self) -> None: method handle (line 292) | def handle( method next_state (line 313) | def next_state(self, agent: OpenAIOperatorAgent) -> OpenAIOperatorState: method is_subtask_end (line 335) | def is_subtask_end(self) -> bool: method name (line 343) | def name(cls) -> str: class ErrorOpenAIOperatorState (line 352) | class ErrorOpenAIOperatorState(OpenAIOperatorState): method handle (line 357) | def handle( method next_agent (line 368) | def next_agent(self, agent: "OpenAIOperatorAgent") -> HostAgent: method next_state (line 376) | def next_state(self, agent: "OpenAIOperatorAgent") -> HostAgentState: method is_round_end (line 384) | def is_round_end(self) -> bool: method is_subtask_end (line 391) | def is_subtask_end(self) -> bool: method name (line 399) | def name(cls) -> str: class NoneOpenAIOperatorState (line 408) | class NoneOpenAIOperatorState(OpenAIOperatorState): method next_agent (line 413) | def next_agent(self, agent: "OpenAIOperatorAgent") -> HostAgent: method next_state (line 421) | def next_state(self, agent: "OpenAIOperatorAgent") -> HostAgentState: method is_subtask_end (line 429) | def is_subtask_end(self) -> bool: method name (line 437) | def name(cls) -> str: FILE: ufo/automator/action_execution.py class ActionExecutor (line 19) | class ActionExecutor: method __init__ (line 24) | def __init__(self): method _control_validation (line 28) | def _control_validation(control: UIAWrapper) -> bool: method _get_control_log (line 44) | def _get_control_log( method execute (line 85) | def execute( FILE: ufo/automator/app_apis/basic.py class WinCOMReceiverBasic (line 21) | class WinCOMReceiverBasic(ReceiverBasic): method __init__ (line 28) | def __init__(self, app_root_name: str, process_name: str, clsid: str) ... method get_object_from_process_name (line 49) | def get_object_from_process_name(self) -> CDispatch: method get_suffix_mapping (line 55) | def get_suffix_mapping(self) -> Dict[str, str]: method app_match (line 69) | def app_match(self, object_name_list: List[str]) -> str: method full_path (line 92) | def full_path(self) -> str: method save (line 103) | def save(self) -> None: method save_to_xml (line 112) | def save_to_xml(self, file_path: str) -> None: method close (line 122) | def close(self) -> None: method type_name (line 132) | def type_name(self): method xml_format_code (line 136) | def xml_format_code(self) -> int: method longest_common_substring_length (line 140) | def longest_common_substring_length(str1: str, str2: str) -> int: class WinCOMCommand (line 167) | class WinCOMCommand(CommandBasic): method __init__ (line 172) | def __init__(self, receiver: WinCOMReceiverBasic, params=None) -> None: method execute (line 181) | def execute(self): FILE: ufo/automator/app_apis/excel/excelclient.py class ExcelWinCOMReceiver (line 13) | class ExcelWinCOMReceiver(WinCOMReceiverBasic): method get_object_from_process_name (line 20) | def get_object_from_process_name(self) -> None: method table2markdown (line 34) | def table2markdown(self, sheet_name: Union[str, int]) -> str: method insert_excel_table (line 84) | def insert_excel_table( method select_table_range (line 111) | def select_table_range( method reorder_columns (line 157) | def reorder_columns(self, sheet_name: str, desired_order: List[str] = ... method get_range_values (line 221) | def get_range_values( method save_as (line 279) | def save_as( method letters_to_number (line 325) | def letters_to_number(letters: str) -> int: method get_nth_non_empty_position (line 337) | def get_nth_non_empty_position(target_idx: int, empty_cols: List[int])... method format_value (line 354) | def format_value(value: Any) -> str: method type_name (line 365) | def type_name(self): method xml_format_code (line 369) | def xml_format_code(self) -> int: class GetSheetContentCommand (line 374) | class GetSheetContentCommand(WinCOMCommand): method execute (line 379) | def execute(self): method name (line 387) | def name(cls) -> str: class InsertExcelTableCommand (line 395) | class InsertExcelTableCommand(WinCOMCommand): method execute (line 400) | def execute(self): method name (line 413) | def name(cls) -> str: class SelectTableRangeCommand (line 421) | class SelectTableRangeCommand(WinCOMCommand): method execute (line 426) | def execute(self): method name (line 440) | def name(cls) -> str: class GetRangeValuesCommand (line 448) | class GetRangeValuesCommand(WinCOMCommand): method execute (line 453) | def execute(self): method name (line 467) | def name(cls) -> str: class ReorderColumnsCommand (line 475) | class ReorderColumnsCommand(WinCOMCommand): method execute (line 480) | def execute(self): method name (line 491) | def name(cls) -> str: class SaveAsCommand (line 499) | class SaveAsCommand(WinCOMCommand): method execute (line 504) | def execute(self): method name (line 516) | def name(cls) -> str: FILE: ufo/automator/app_apis/factory.py class APIReceiverFactory (line 19) | class APIReceiverFactory(ReceiverFactory): method is_api (line 25) | def is_api(cls) -> bool: class COMReceiverFactory (line 33) | class COMReceiverFactory(APIReceiverFactory): method create_receiver (line 38) | def create_receiver( method __com_client_mapper (line 57) | def __com_client_mapper(self, app_root_name: str) -> Type[WinCOMReceiv... method __app_root_mappping (line 73) | def __app_root_mappping(self, app_root_name: str) -> str: method name (line 89) | def name(cls) -> str: class WebReceiverFactory (line 97) | class WebReceiverFactory(APIReceiverFactory): method create_receiver (line 102) | def create_receiver(self, app_root_name: str, *args, **kwargs) -> Rece... method supported_app_roots (line 119) | def supported_app_roots(self): method name (line 126) | def name(cls) -> str: class ShellReceiverFactory (line 134) | class ShellReceiverFactory(APIReceiverFactory): method create_receiver (line 139) | def create_receiver(self, *args, **kwargs) -> ReceiverBasic: method supported_app_roots (line 149) | def supported_app_roots(self): method name (line 156) | def name(cls) -> str: FILE: ufo/automator/app_apis/powerpoint/powerpointclient.py class PowerPointWinCOMReceiver (line 11) | class PowerPointWinCOMReceiver(WinCOMReceiverBasic): method get_object_from_process_name (line 18) | def get_object_from_process_name(self) -> None: method set_background_color (line 35) | def set_background_color(self, color: str, slide_index: List[int] = No... method save_as (line 66) | def save_as( method type_name (line 145) | def type_name(self): method xml_format_code (line 149) | def xml_format_code(self) -> int: class SetBackgroundColorCommand (line 154) | class SetBackgroundColorCommand(WinCOMCommand): method execute (line 159) | def execute(self): method name (line 169) | def name(cls) -> str: class SaveAsCommand (line 177) | class SaveAsCommand(WinCOMCommand): method execute (line 182) | def execute(self): method name (line 194) | def name(cls) -> str: FILE: ufo/automator/app_apis/shell/shell_client.py class ShellReceiver (line 13) | class ShellReceiver(ReceiverBasic): method __init__ (line 20) | def __init__(self) -> None: method run_shell (line 26) | def run_shell(self, params: Dict[str, Any]) -> Any: method execute_command (line 70) | def execute_command(self, params: Dict[str, Any]) -> Dict[str, Any]: method change_directory (line 107) | def change_directory(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_current_directory (line 122) | def get_current_directory(self, params: Dict[str, Any]) -> Dict[str, A... method list_files (line 133) | def list_files(self, params: Dict[str, Any]) -> Dict[str, Any]: method create_directory (line 170) | def create_directory(self, params: Dict[str, Any]) -> Dict[str, Any]: method remove_file (line 188) | def remove_file(self, params: Dict[str, Any]) -> Dict[str, Any]: method copy_file (line 215) | def copy_file(self, params: Dict[str, Any]) -> Dict[str, Any]: method move_file (line 237) | def move_file(self, params: Dict[str, Any]) -> Dict[str, Any]: method read_file (line 251) | def read_file(self, params: Dict[str, Any]) -> Dict[str, Any]: method write_file (line 265) | def write_file(self, params: Dict[str, Any]) -> Dict[str, Any]: method check_file_exists (line 282) | def check_file_exists(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_file_info (line 295) | def get_file_info(self, params: Dict[str, Any]) -> Dict[str, Any]: method find_files (line 320) | def find_files(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_environment_variable (line 346) | def get_environment_variable(self, params: Dict[str, Any]) -> Dict[str... method set_environment_variable (line 358) | def set_environment_variable(self, params: Dict[str, Any]) -> Dict[str... method get_system_info (line 371) | def get_system_info(self, params: Dict[str, Any]) -> Dict[str, Any]: class ShellCommand (line 434) | class ShellCommand(CommandBasic): method __init__ (line 439) | def __init__(self, receiver: ShellReceiver, params: Dict[str, Any]) ->... method name (line 450) | def name(cls) -> str: class RunShellCommand (line 458) | class RunShellCommand(ShellCommand): method execute (line 463) | def execute(self): method name (line 471) | def name(cls) -> str: class ExecuteCommand (line 479) | class ExecuteCommand(ShellCommand): method execute (line 484) | def execute(self): method name (line 492) | def name(cls) -> str: class ChangeDirectoryCommand (line 500) | class ChangeDirectoryCommand(ShellCommand): method execute (line 505) | def execute(self): method name (line 513) | def name(cls) -> str: class GetCurrentDirectoryCommand (line 521) | class GetCurrentDirectoryCommand(ShellCommand): method execute (line 526) | def execute(self): method name (line 534) | def name(cls) -> str: class ListFilesCommand (line 542) | class ListFilesCommand(ShellCommand): method execute (line 547) | def execute(self): method name (line 555) | def name(cls) -> str: class CreateDirectoryCommand (line 563) | class CreateDirectoryCommand(ShellCommand): method execute (line 568) | def execute(self): method name (line 576) | def name(cls) -> str: class RemoveFileCommand (line 584) | class RemoveFileCommand(ShellCommand): method execute (line 589) | def execute(self): method name (line 597) | def name(cls) -> str: class CopyFileCommand (line 605) | class CopyFileCommand(ShellCommand): method execute (line 610) | def execute(self): method name (line 618) | def name(cls) -> str: class MoveFileCommand (line 626) | class MoveFileCommand(ShellCommand): method execute (line 631) | def execute(self): method name (line 639) | def name(cls) -> str: class ReadFileCommand (line 647) | class ReadFileCommand(ShellCommand): method execute (line 652) | def execute(self): method name (line 660) | def name(cls) -> str: class WriteFileCommand (line 668) | class WriteFileCommand(ShellCommand): method execute (line 673) | def execute(self): method name (line 681) | def name(cls) -> str: class CheckFileExistsCommand (line 689) | class CheckFileExistsCommand(ShellCommand): method execute (line 694) | def execute(self): method name (line 702) | def name(cls) -> str: class GetFileInfoCommand (line 710) | class GetFileInfoCommand(ShellCommand): method execute (line 715) | def execute(self): method name (line 723) | def name(cls) -> str: class FindFilesCommand (line 731) | class FindFilesCommand(ShellCommand): method execute (line 736) | def execute(self): method name (line 744) | def name(cls) -> str: class GetEnvironmentVariableCommand (line 752) | class GetEnvironmentVariableCommand(ShellCommand): method execute (line 757) | def execute(self): method name (line 765) | def name(cls) -> str: class SetEnvironmentVariableCommand (line 773) | class SetEnvironmentVariableCommand(ShellCommand): method execute (line 778) | def execute(self): method name (line 786) | def name(cls) -> str: class GetSystemInfoCommand (line 794) | class GetSystemInfoCommand(ShellCommand): method execute (line 799) | def execute(self): method name (line 807) | def name(cls) -> str: FILE: ufo/automator/app_apis/web/webclient.py class WebReceiver (line 14) | class WebReceiver(ReceiverBasic): method __init__ (line 21) | def __init__(self) -> None: method web_crawler (line 31) | def web_crawler(self, url: str, ignore_link: bool) -> str: method navigate_to_url (line 58) | def navigate_to_url(self, params: Dict[str, Any]) -> Dict[str, Any]: method click_element (line 72) | def click_element(self, params: Dict[str, Any]) -> Dict[str, Any]: method type_text (line 85) | def type_text(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_page_content (line 100) | def get_page_content(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_page_title (line 138) | def get_page_title(self, params: Dict[str, Any]) -> Dict[str, Any]: method scroll_page (line 165) | def scroll_page(self, params: Dict[str, Any]) -> Dict[str, Any]: method wait_for_element (line 179) | def wait_for_element(self, params: Dict[str, Any]) -> Dict[str, Any]: method take_screenshot (line 193) | def take_screenshot(self, params: Dict[str, Any]) -> Dict[str, Any]: method execute_javascript (line 205) | def execute_javascript(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_element_text (line 217) | def get_element_text(self, params: Dict[str, Any]) -> Dict[str, Any]: method get_element_attribute (line 241) | def get_element_attribute(self, params: Dict[str, Any]) -> Dict[str, A... method type_name (line 272) | def type_name(self): method xml_format_code (line 276) | def xml_format_code(self) -> int: class WebCommand (line 280) | class WebCommand(CommandBasic): method __init__ (line 285) | def __init__(self, receiver: WebReceiver, params: Dict[str, Any]) -> N... method name (line 295) | def name(cls) -> str: class WebCrawlerCommand (line 303) | class WebCrawlerCommand(WebCommand): method execute (line 308) | def execute(self): method name (line 319) | def name(cls) -> str: class NavigateToUrlCommand (line 327) | class NavigateToUrlCommand(WebCommand): method execute (line 328) | def execute(self): method name (line 332) | def name(cls) -> str: class ClickElementCommand (line 337) | class ClickElementCommand(WebCommand): method execute (line 338) | def execute(self): method name (line 342) | def name(cls) -> str: class TypeTextCommand (line 347) | class TypeTextCommand(WebCommand): method execute (line 348) | def execute(self): method name (line 352) | def name(cls) -> str: class GetPageContentCommand (line 357) | class GetPageContentCommand(WebCommand): method execute (line 358) | def execute(self): method name (line 362) | def name(cls) -> str: class GetPageTitleCommand (line 367) | class GetPageTitleCommand(WebCommand): method execute (line 368) | def execute(self): method name (line 372) | def name(cls) -> str: class ScrollPageCommand (line 377) | class ScrollPageCommand(WebCommand): method execute (line 378) | def execute(self): method name (line 382) | def name(cls) -> str: class WaitForElementCommand (line 387) | class WaitForElementCommand(WebCommand): method execute (line 388) | def execute(self): method name (line 392) | def name(cls) -> str: class TakeScreenshotCommand (line 397) | class TakeScreenshotCommand(WebCommand): method execute (line 398) | def execute(self): method name (line 402) | def name(cls) -> str: class ExecuteJavascriptCommand (line 407) | class ExecuteJavascriptCommand(WebCommand): method execute (line 408) | def execute(self): method name (line 412) | def name(cls) -> str: class GetElementTextCommand (line 417) | class GetElementTextCommand(WebCommand): method execute (line 418) | def execute(self): method name (line 422) | def name(cls) -> str: class GetElementAttributeCommand (line 427) | class GetElementAttributeCommand(WebCommand): method execute (line 428) | def execute(self): method name (line 432) | def name(cls) -> str: FILE: ufo/automator/app_apis/word/wordclient.py class WordWinCOMReceiver (line 11) | class WordWinCOMReceiver(WinCOMReceiverBasic): method get_object_from_process_name (line 18) | def get_object_from_process_name(self) -> None: method insert_table (line 32) | def insert_table(self, rows: int, columns: int) -> str: method select_text (line 54) | def select_text(self, text: str) -> str: method select_paragraph (line 68) | def select_paragraph( method select_table (line 99) | def select_table(self, number: int) -> str: method set_font (line 114) | def set_font(self, font_name: str = None, font_size: int = None) -> str: method save_as (line 146) | def save_as( method type_name (line 192) | def type_name(self): method xml_format_code (line 196) | def xml_format_code(self) -> int: class InsertTableCommand (line 201) | class InsertTableCommand(WinCOMCommand): method execute (line 206) | def execute(self): method name (line 216) | def name(cls) -> str: class SelectTextCommand (line 224) | class SelectTextCommand(WinCOMCommand): method execute (line 229) | def execute(self): method name (line 237) | def name(cls) -> str: class SelectTableCommand (line 245) | class SelectTableCommand(WinCOMCommand): method execute (line 250) | def execute(self): method name (line 258) | def name(cls) -> str: class SelectParagraphCommand (line 266) | class SelectParagraphCommand(WinCOMCommand): method execute (line 271) | def execute(self): method name (line 283) | def name(cls) -> str: class SaveAsCommand (line 291) | class SaveAsCommand(WinCOMCommand): method execute (line 296) | def execute(self): method name (line 308) | def name(cls) -> str: class SetFontCommand (line 316) | class SetFontCommand(WinCOMCommand): method execute (line 321) | def execute(self): method name (line 331) | def name(cls) -> str: FILE: ufo/automator/basic.py class ReceiverBasic (line 10) | class ReceiverBasic(ABC): method command_registry (line 18) | def command_registry(self) -> Dict[str, Type[CommandBasic]]: method register_command (line 24) | def register_command(self, command_name: str, command: CommandBasic) -... method list_commands (line 33) | def list_commands(self): method supported_command_names (line 40) | def supported_command_names(self) -> List[str]: method self_command_mapping (line 46) | def self_command_mapping(self) -> Dict[str, CommandBasic]: method register (line 53) | def register(cls, command_class: Type[CommandBasic]) -> Type[CommandBa... method type_name (line 63) | def type_name(self): class CommandBasic (line 68) | class CommandBasic(ABC): method __init__ (line 73) | def __init__(self, receiver: ReceiverBasic, params: Dict = None) -> None: method execute (line 82) | def execute(self): method undo (line 88) | def undo(self): method redo (line 94) | def redo(self): method name (line 102) | def name(cls): class ReceiverFactory (line 106) | class ReceiverFactory(ABC): method create_receiver (line 112) | def create_receiver(self, *args, **kwargs): method name (line 116) | def name(cls) -> str: method is_api (line 123) | def is_api(cls) -> bool: FILE: ufo/automator/puppeteer.py class AppPuppeteer (line 22) | class AppPuppeteer: method __init__ (line 27) | def __init__(self, process_name: str, app_root_name: str) -> None: method create_command (line 39) | def create_command( method get_command_types (line 58) | def get_command_types(self, command_name: str) -> str: method execute_command (line 73) | def execute_command( method execute_all_commands (line 87) | def execute_all_commands(self) -> List[Any]: method add_command (line 99) | def add_command( method list_commands (line 110) | def list_commands(self) -> set: method get_command_queue_length (line 122) | def get_command_queue_length(self) -> int: method full_path (line 130) | def full_path(self) -> str: method save (line 141) | def save(self) -> None: method save_to_xml (line 149) | def save_to_xml(self, file_path: str) -> None: method close (line 162) | def close(self) -> None: method get_command_string (line 171) | def get_command_string(command_name: str, params: Dict[str, str]) -> str: class ReceiverManager (line 185) | class ReceiverManager: method __init__ (line 192) | def __init__(self): method create_ui_control_receiver (line 202) | def create_ui_control_receiver( method create_api_receiver (line 225) | def create_api_receiver(self, app_root_name: str, process_name: str) -... method _update_receiver_registry (line 243) | def _update_receiver_registry(self) -> None: method get_receiver_from_command_name (line 252) | def get_receiver_from_command_name(self, command_name: str) -> Receive... method receiver_list (line 264) | def receiver_list(self) -> List[ReceiverBasic]: method receiver_factory_registry (line 272) | def receiver_factory_registry( method com_receiver (line 282) | def com_receiver(self) -> WinCOMReceiverBasic: method register (line 294) | def register( FILE: ufo/automator/ui_control/control_filter.py class ControlFilterFactory (line 10) | class ControlFilterFactory: method create_control_filter (line 16) | def create_control_filter(control_filter_type: str, *args, **kwargs): method inplace_append_filtered_annotation_dict (line 32) | def inplace_append_filtered_annotation_dict( method get_plans (line 53) | def get_plans(plan: List[str], topk_plan: int) -> List[str]: class BasicControlFilter (line 63) | class BasicControlFilter: method __new__ (line 70) | def __new__(cls, model_path): method load_model (line 83) | def load_model(model_path): method get_embedding (line 93) | def get_embedding(self, content): method control_filter (line 103) | def control_filter(self, control_dicts, plans, **kwargs): method plans_to_keywords (line 113) | def plans_to_keywords(plans: List[str]) -> List[str]: method remove_stopwords (line 132) | def remove_stopwords(keywords): method cos_sim (line 152) | def cos_sim(embedding1, embedding2) -> float: class TextControlFilter (line 164) | class TextControlFilter: method control_filter (line 170) | def control_filter(control_dicts: Dict, plans: List[str]) -> Dict: class SemanticControlFilter (line 190) | class SemanticControlFilter(BasicControlFilter): method control_filter_score (line 195) | def control_filter_score(self, control_text, plans): method control_filter (line 207) | def control_filter(self, control_dicts, plans, top_k): class IconControlFilter (line 233) | class IconControlFilter(BasicControlFilter): method control_filter_score (line 238) | def control_filter_score(self, control_icon, plans): method control_filter (line 250) | def control_filter(self, control_dicts, cropped_icons_dict, plans, top... FILE: ufo/automator/ui_control/controller.py class ControlReceiver (line 45) | class ControlReceiver(ReceiverBasic): method __init__ (line 52) | def __init__( method type_name (line 71) | def type_name(self): method atomic_execution (line 74) | def atomic_execution(self, method_name: str, params: Dict[str, Any]) -... method click_input (line 98) | def click_input(self, params: Dict[str, Union[str, bool]]) -> str: method click_on_coordinates (line 113) | def click_on_coordinates(self, params: Dict[str, str]) -> str: method drag_on_coordinates (line 140) | def drag_on_coordinates(self, params: Dict[str, str]) -> str: method summary (line 173) | def summary(self, params: Dict[str, str]) -> str: method set_edit_text (line 182) | def set_edit_text(self, params: Dict[str, str]) -> str: method keyboard_input (line 261) | def keyboard_input(self, params: Dict[str, str]) -> str: method key_press (line 290) | def key_press(self, params: Dict[str, str]) -> str: method texts (line 306) | def texts(self) -> str: method wheel_mouse_input (line 313) | def wheel_mouse_input(self, params: Dict[str, str]): method scroll (line 329) | def scroll(self, params: Dict[str, str]) -> str: method mouse_move (line 347) | def mouse_move(self, params: Dict[str, str]) -> str: method type (line 361) | def type(self, params: Dict[str, str]) -> str: method no_action (line 371) | def no_action(self): method annotation (line 379) | def annotation( method wait_enabled (line 395) | def wait_enabled(self, timeout: int = 10, retry_interval: int = 0.5) -... method wait_visible (line 408) | def wait_visible(self, timeout: int = 10, retry_interval: int = 0.5) -... method transform_point (line 421) | def transform_point(self, fraction_x: float, fraction_y: float) -> Tup... method transfrom_absolute_point_to_fractional (line 439) | def transfrom_absolute_point_to_fractional(self, x: int, y: int) -> Tu... method transform_scaled_point_to_raw (line 458) | def transform_scaled_point_to_raw( class UIControlReceiverFactory (line 485) | class UIControlReceiverFactory(ReceiverFactory): method create_receiver (line 490) | def create_receiver(self, control, application): method name (line 500) | def name(cls) -> str: class ControlCommand (line 508) | class ControlCommand(CommandBasic): method __init__ (line 513) | def __init__(self, receiver: ControlReceiver, params=None) -> None: method execute (line 523) | def execute(self): method name (line 527) | def name(cls) -> str: class AtomicCommand (line 535) | class AtomicCommand(ControlCommand): method __init__ (line 540) | def __init__( method execute (line 556) | def execute(self) -> str: method name (line 566) | def name(cls) -> str: class ClickInputCommand (line 575) | class ClickInputCommand(ControlCommand): method execute (line 580) | def execute(self) -> str: method name (line 588) | def name(cls) -> str: class ClickOnCoordinatesCommand (line 597) | class ClickOnCoordinatesCommand(ControlCommand): method execute (line 602) | def execute(self) -> str: method name (line 610) | def name(cls) -> str: class DragOnCoordinatesCommand (line 619) | class DragOnCoordinatesCommand(ControlCommand): method execute (line 624) | def execute(self) -> str: method name (line 633) | def name(cls) -> str: class SummaryCommand (line 642) | class SummaryCommand(ControlCommand): method execute (line 647) | def execute(self) -> str: method name (line 655) | def name(cls) -> str: class SetEditTextCommand (line 664) | class SetEditTextCommand(ControlCommand): method execute (line 669) | def execute(self) -> str: method name (line 678) | def name(cls) -> str: class GetTextsCommand (line 687) | class GetTextsCommand(ControlCommand): method execute (line 692) | def execute(self) -> str: method name (line 700) | def name(cls) -> str: class WheelMouseInputCommand (line 709) | class WheelMouseInputCommand(ControlCommand): method execute (line 714) | def execute(self) -> str: method name (line 722) | def name(cls) -> str: class AnnotationCommand (line 731) | class AnnotationCommand(ControlCommand): method __init__ (line 736) | def __init__( method execute (line 751) | def execute(self) -> str: method name (line 759) | def name(cls) -> str: class keyboardInputCommand (line 768) | class keyboardInputCommand(ControlCommand): method execute (line 773) | def execute(self) -> str: method name (line 781) | def name(cls) -> str: class NoActionCommand (line 790) | class NoActionCommand(ControlCommand): method execute (line 795) | def execute(self) -> str: method name (line 803) | def name(cls) -> str: class ClickCommand (line 815) | class ClickCommand(ControlCommand): method execute (line 820) | def execute(self) -> str: method name (line 852) | def name(cls) -> str: class DoubleClickCommand (line 861) | class DoubleClickCommand(ControlCommand): method execute (line 866) | def execute(self) -> str: method name (line 896) | def name(cls) -> str: class DragCommand (line 905) | class DragCommand(ControlCommand): method execute (line 910) | def execute(self) -> str: method name (line 958) | def name(cls) -> str: class KeyPressCommand (line 967) | class KeyPressCommand(ControlCommand): method execute (line 972) | def execute(self) -> str: method name (line 981) | def name(cls) -> str: class MouseMoveCommand (line 990) | class MouseMoveCommand(ControlCommand): method execute (line 995) | def execute(self) -> str: method name (line 1022) | def name(cls) -> str: class ScrollCommand (line 1031) | class ScrollCommand(ControlCommand): method execute (line 1036) | def execute(self) -> str: method name (line 1066) | def name(cls) -> str: class TypeCommand (line 1075) | class TypeCommand(ControlCommand): method execute (line 1080) | def execute(self) -> str: method name (line 1089) | def name(cls) -> str: class WaitCommand (line 1098) | class WaitCommand(ControlCommand): method execute (line 1103) | def execute(self) -> str: method name (line 1112) | def name(cls) -> str: class TextTransformer (line 1120) | class TextTransformer: method transform_text (line 1126) | def transform_text(text: str, transform_tag: str) -> str: method transform_enter (line 1159) | def transform_enter(text: str) -> str: method transform_tab (line 1168) | def transform_tab(text: str) -> str: method transform_plus (line 1177) | def transform_plus(text: str) -> str: method transform_caret (line 1186) | def transform_caret(text: str) -> str: method transform_brace (line 1195) | def transform_brace(text: str) -> str: method transform_percent (line 1204) | def transform_percent(text: str) -> str: method transform_control (line 1213) | def transform_control(text: str) -> str: method transform_shift (line 1222) | def transform_shift(text: str) -> str: method transform_alt (line 1231) | def transform_alt(text: str) -> str: FILE: ufo/automator/ui_control/grounding/basic.py class VirtualUIAElementInfo (line 22) | class VirtualUIAElementInfo( method __init__ (line 30) | def __init__( method control_type (line 53) | def control_type(self): method name (line 58) | def name(self): method automation_id (line 62) | def automation_id(self): method class_name (line 66) | def class_name(self): method rectangle (line 70) | def rectangle(self): method rectangle (line 75) | def rectangle(self): class BasicGrounding (line 80) | class BasicGrounding(ABC): method __init__ (line 82) | def __init__(self, service: BaseService): method predict (line 90) | def predict(self, image_path: str) -> str: method parse_results (line 99) | def parse_results( method screen_parsing (line 119) | def screen_parsing( method uia_wrapping (line 134) | def uia_wrapping(control_info: Dict[str, Any]) -> UIAWrapper: method convert_to_virtual_uia_elements (line 154) | def convert_to_virtual_uia_elements( FILE: ufo/automator/ui_control/grounding/omniparser.py class OmniparserGrounding (line 25) | class OmniparserGrounding(BasicGrounding): method predict (line 32) | def predict( method parse_results (line 87) | def parse_results( method _get_application_rect_from_uia (line 122) | def _get_application_rect_from_uia( method _get_application_rect_from_target_info (line 139) | def _get_application_rect_from_target_info( method _calculate_absolute_coordinates (line 160) | def _calculate_absolute_coordinates( method screen_parsing (line 197) | def screen_parsing( FILE: ufo/automator/ui_control/inspector.py class BackendFactory (line 32) | class BackendFactory: method create_backend (line 38) | def create_backend(backend: str) -> BackendStrategy: class BackendStrategy (line 52) | class BackendStrategy(ABC): method get_desktop_windows (line 58) | def get_desktop_windows(self, remove_empty: bool) -> List[UIAWrapper]: method find_control_elements_in_descendants (line 67) | def find_control_elements_in_descendants( class UIAElementInfoFix (line 92) | class UIAElementInfoFix(UIAElementInfo): method __init__ (line 96) | def __init__(self, element, is_ref=False, source: Optional[str] = None): method sleep (line 101) | def sleep(self, ms: float = 0): method _time_wrap (line 112) | def _time_wrap(func): method _get_current_name (line 135) | def _get_current_name(self): method _get_current_rich_text (line 139) | def _get_current_rich_text(self): method _get_current_class_name (line 143) | def _get_current_class_name(self): method _get_current_control_type (line 147) | def _get_current_control_type(self): method _get_current_rectangle (line 151) | def _get_current_rectangle(self): method _get_cached_rectangle (line 160) | def _get_cached_rectangle(self) -> tuple[int, int, int, int]: method rectangle (line 166) | def rectangle(self): method source (line 170) | def source(self): class UIABackendStrategy (line 174) | class UIABackendStrategy(BackendStrategy): method get_desktop_windows (line 179) | def get_desktop_windows(self, remove_empty: bool) -> List[UIAWrapper]: method find_control_elements_in_descendants (line 206) | def find_control_elements_in_descendants( method _get_uia_control_id_map (line 314) | def _get_uia_control_id_map(): method _get_uia_control_name_map (line 319) | def _get_uia_control_name_map(): method _get_cache_request (line 325) | def _get_cache_request(): method _get_control_filter_condition (line 334) | def _get_control_filter_condition( method _get_uia_defs (line 373) | def _get_uia_defs(): class Win32BackendStrategy (line 380) | class Win32BackendStrategy(BackendStrategy): method get_desktop_windows (line 385) | def get_desktop_windows(self, remove_empty: bool) -> List[UIAWrapper]: method find_control_elements_in_descendants (line 404) | def find_control_elements_in_descendants( class ControlInspectorFacade (line 466) | class ControlInspectorFacade: method __new__ (line 473) | def __new__(cls, backend: str = "uia") -> "ControlInspectorFacade": method __init__ (line 484) | def __init__(self, backend: str = "uia") -> None: method get_desktop_windows (line 491) | def get_desktop_windows(self, remove_empty: bool = True) -> List[UIAWr... method find_control_elements_in_descendants (line 499) | def find_control_elements_in_descendants( method get_desktop_app_dict (line 531) | def get_desktop_app_dict(self, remove_empty: bool = True) -> Dict[str,... method get_desktop_app_info (line 556) | def get_desktop_app_info( method get_control_info_batch (line 572) | def get_control_info_batch( method get_control_info_list_of_dict (line 586) | def get_control_info_list_of_dict( method get_check_state (line 604) | def get_check_state(control_item: auto.Control) -> bool | None: method get_control_info (line 637) | def get_control_info( method get_application_root_name (line 683) | def get_application_root_name(window: UIAWrapper) -> str: method desktop (line 699) | def desktop(self) -> UIAWrapper: FILE: ufo/automator/ui_control/screenshot.py class Photographer (line 36) | class Photographer(ABC): method capture (line 42) | def capture(self) -> Image.Image: method rescale_image (line 46) | def rescale_image(image: Image.Image, scaler: List[int]) -> Image.Image: class ControlPhotographer (line 70) | class ControlPhotographer(Photographer): method __init__ (line 75) | def __init__(self, control: UIAWrapper): method capture (line 82) | def capture(self, save_path: str = None, scalar: List[int] = None) -> ... function _win32_print_window (line 136) | def _win32_print_window(hwnd: int) -> Optional[Image.Image]: function _win32_grab_screen (line 207) | def _win32_grab_screen() -> Optional[Image.Image]: class DesktopPhotographer (line 290) | class DesktopPhotographer(Photographer): method __init__ (line 295) | def __init__(self, all_screens=True) -> None: method capture (line 302) | def capture(self, save_path: str = None, scalar: List[int] = None) -> ... class PhotographerDecorator (line 341) | class PhotographerDecorator(Photographer): method __init__ (line 346) | def __init__(self, photographer: Photographer) -> None: method capture (line 353) | def capture(self, save_path=None) -> Image.Image: method coordinate_adjusted (line 362) | def coordinate_adjusted(window_rect: RECT, control_rect: RECT) -> Tuple: method coordinate_adjusted_to_relative (line 380) | def coordinate_adjusted_to_relative(window_rect: RECT, control_rect: R... class RectangleDecorator (line 401) | class RectangleDecorator(PhotographerDecorator): method __init__ (line 406) | def __init__( method draw_rectangles (line 427) | def draw_rectangles( method capture (line 442) | def capture( method capture_from_adjusted_coords (line 472) | def capture_from_adjusted_coords( class AnnotationDecorator (line 508) | class AnnotationDecorator(PhotographerDecorator): method __init__ (line 513) | def __init__( method draw_rectangles_controls (line 536) | def draw_rectangles_controls( method _get_button_img (line 575) | def _get_button_img( method _get_font (line 609) | def _get_font(name: str, size: int): method number_to_letter (line 613) | def number_to_letter(n: int): method get_annotation_dict (line 632) | def get_annotation_dict(self) -> Dict[str, UIAWrapper]: method get_cropped_icons_dict (line 646) | def get_cropped_icons_dict( method capture_with_annotation_dict (line 665) | def capture_with_annotation_dict( method capture (line 759) | def capture(self, save_path: Optional[str] = None) -> Image.Image: class TargetAnnotationDecorator (line 770) | class TargetAnnotationDecorator(PhotographerDecorator): method __init__ (line 776) | def __init__( method _convert_absolute_to_relative_coords (line 798) | def _convert_absolute_to_relative_coords( method capture_with_target_info (line 826) | def capture_with_target_info( class PhotographerFactory (line 922) | class PhotographerFactory: method create_screenshot (line 924) | def create_screenshot(screenshot_type: str, *args, **kwargs): class PhotographerFacade (line 938) | class PhotographerFacade: method __new__ (line 946) | def __new__(cls): method __init__ (line 955) | def __init__(self): method capture_app_window_screenshot (line 958) | def capture_app_window_screenshot( method capture_desktop_screen_screenshot (line 971) | def capture_desktop_screen_screenshot( method capture_app_window_screenshot_with_rectangle (line 984) | def capture_app_window_screenshot_with_rectangle( method capture_app_window_screenshot_with_rectangle_from_adjusted_coords (line 1008) | def capture_app_window_screenshot_with_rectangle_from_adjusted_coords( method capture_app_window_screenshot_with_annotation_dict (line 1037) | def capture_app_window_screenshot_with_annotation_dict( method capture_app_window_screenshot_with_annotation (line 1067) | def capture_app_window_screenshot_with_annotation( method capture_app_window_screenshot_with_point_from_path (line 1092) | def capture_app_window_screenshot_with_point_from_path( method get_annotation_dict (line 1127) | def get_annotation_dict( method get_cropped_icons_dict (line 1145) | def get_cropped_icons_dict( method concat_screenshots (line 1161) | def concat_screenshots( method load_image (line 1201) | def load_image(image_path: str) -> Image.Image: method image_to_base64 (line 1210) | def image_to_base64(image: Image.Image) -> str: method control_iou (line 1223) | def control_iou(control1: UIAWrapper, control2: UIAWrapper) -> float: method merge_control_list (line 1247) | def merge_control_list( method target_info_iou (line 1277) | def target_info_iou(target1: "TargetInfo", target2: "TargetInfo") -> f... method merge_target_info_list (line 1317) | def merge_target_info_list( method encode_image (line 1347) | def encode_image(cls, image: Image.Image, mime_type: Optional[str] = N... method encode_image_from_path (line 1407) | def encode_image_from_path( method capture_app_window_screenshot_with_target_list (line 1459) | def capture_app_window_screenshot_with_target_list( FILE: ufo/automator/ui_control/ui_tree.py class UITree (line 20) | class UITree: method __init__ (line 25) | def __init__(self, root: UIAWrapper): method _generate_node_id (line 40) | def _generate_node_id(self) -> str: method _get_ui_tree (line 48) | def _get_ui_tree(self, root: UIAWrapper, level: int = 0) -> Dict[str, ... method ui_tree (line 102) | def ui_tree(self) -> Dict[str, Any]: method save_ui_tree_to_json (line 108) | def save_ui_tree_to_json(self, file_path: str) -> None: method flatten_ui_tree (line 122) | def flatten_ui_tree(self) -> List[Dict[str, Any]]: method ui_tree_diff (line 152) | def ui_tree_diff(ui_tree_1: Dict[str, Any], ui_tree_2: Dict[str, Any]): method apply_ui_tree_diff (line 230) | def apply_ui_tree_diff( FILE: ufo/client/client.py function main (line 81) | async def main(): FILE: ufo/client/computer.py class Computer (line 22) | class Computer: method __init__ (line 30) | def __init__( method async_init (line 79) | async def async_init(self) -> None: method meta_tool (line 98) | def meta_tool(name: str): method _init_data_collection_servers (line 111) | def _init_data_collection_servers(self) -> Dict[str, BaseMCPServer]: method _init_action_servers (line 135) | def _init_action_servers(self) -> Dict[str, BaseMCPServer]: method _run_action (line 156) | async def _run_action(self, tool_call: MCPToolCall) -> CallToolResult: method run_actions (line 266) | async def run_actions(self, tool_calls: List[MCPToolCall]) -> List[Cal... method register_mcp_servers (line 283) | async def register_mcp_servers( method register_one_mcp_server (line 300) | async def register_one_mcp_server( method _register_tool (line 369) | def _register_tool( method add_server (line 413) | async def add_server( method delete_server (line 442) | async def delete_server( method list_tools (line 468) | async def list_tools( method command2tool (line 512) | def command2tool(self, command: Command) -> MCPToolCall: method make_tool_key (line 562) | def make_tool_key(tool_type: str, tool_name: str) -> str: method data_collection_servers (line 572) | def data_collection_servers(self) -> Dict[str, FastMCP]: method action_servers (line 580) | def action_servers(self) -> Dict[str, FastMCP]: method name (line 588) | def name(self) -> str: class ComputerManager (line 595) | class ComputerManager: method __init__ (line 602) | def __init__(self, configs: Dict[str, Any], mcp_server_manager: MCPSer... method get_or_create (line 612) | async def get_or_create( method reset (line 671) | def reset(self) -> None: class CommandRouter (line 679) | class CommandRouter: method __init__ (line 685) | def __init__(self, computer_manager: ComputerManager): method execute (line 693) | async def execute( function test_command_router (line 790) | def test_command_router(): FILE: ufo/client/device_info_provider.py class DeviceSystemInfo (line 18) | class DeviceSystemInfo: method to_dict (line 52) | def to_dict(self) -> Dict[str, Any]: class DeviceInfoProvider (line 57) | class DeviceInfoProvider: method collect_system_info (line 66) | def collect_system_info( method _get_platform (line 106) | def _get_platform() -> str: method _get_os_version (line 114) | def _get_os_version() -> str: method _get_cpu_count (line 122) | def _get_cpu_count() -> int: method _get_memory_total_gb (line 133) | def _get_memory_total_gb() -> float: method _get_hostname (line 147) | def _get_hostname() -> str: method _get_ip_address (line 155) | def _get_ip_address() -> str: method _detect_features (line 172) | def _detect_features() -> List[str]: method _get_platform_type (line 220) | def _get_platform_type() -> str: FILE: ufo/client/mcp/http_servers/hardware_mcp_server.py function create_hardware_mcp_server (line 32) | def create_hardware_mcp_server(host: str = "", port: int = 8006) -> None: function main (line 424) | def main(): FILE: ufo/client/mcp/http_servers/linux_mcp_server.py function create_bash_mcp_server (line 20) | def create_bash_mcp_server(host: str = "", port: int = 8010) -> None: function main (line 126) | def main(): FILE: ufo/client/mcp/http_servers/mobile_mcp_server.py class MobileServerState (line 28) | class MobileServerState: method __new__ (line 38) | def __new__(cls): method __init__ (line 43) | def __init__(self): method set_installed_apps (line 72) | def set_installed_apps(self, apps: List[TargetInfo]) -> None: method get_installed_apps (line 79) | def get_installed_apps(self) -> Optional[List[TargetInfo]]: method set_current_controls (line 91) | def set_current_controls(self, controls: List[TargetInfo]) -> None: method get_current_controls (line 101) | def get_current_controls(self) -> Optional[List[TargetInfo]]: method get_control_by_id (line 113) | def get_control_by_id(self, control_id: str) -> Optional[TargetInfo]: method set_ui_tree (line 119) | def set_ui_tree(self, xml: str) -> None: method get_ui_tree (line 126) | def get_ui_tree(self) -> Optional[str]: method set_device_info (line 138) | def set_device_info(self, info: Dict[str, Any]) -> None: method get_device_info (line 145) | def get_device_info(self) -> Optional[Dict[str, Any]]: method invalidate_controls (line 157) | def invalidate_controls(self) -> None: method invalidate_ui_tree (line 163) | def invalidate_ui_tree(self) -> None: method invalidate_all (line 168) | def invalidate_all(self) -> None: function _search_app_by_name (line 182) | async def _search_app_by_name( function create_mobile_data_collection_server (line 227) | def create_mobile_data_collection_server( function create_mobile_action_server (line 704) | def create_mobile_action_server( function _detect_adb_path (line 1353) | def _detect_adb_path() -> str: function _run_both_servers_sync (line 1383) | def _run_both_servers_sync(host: str, data_port: int, action_port: int, ... function main (line 1442) | def main(): FILE: ufo/client/mcp/local_servers/__init__.py function load_all_servers (line 19) | def load_all_servers(): FILE: ufo/client/mcp/local_servers/cli_mcp_server.py function create_cli_mcp_server (line 25) | def create_cli_mcp_server(*args, **kwargs) -> FastMCP: FILE: ufo/client/mcp/local_servers/constellation_mcp_server.py function create_constellation_mcp_server (line 30) | def create_constellation_mcp_server(*args, **kwargs) -> FastMCP: FILE: ufo/client/mcp/local_servers/excel_wincom_mcp_server.py class UIServerState (line 40) | class UIServerState: method __new__ (line 44) | def __new__(cls): method __init__ (line 49) | def __init__(self): function create_excel_mcp_server (line 56) | def create_excel_mcp_server(process_name: str) -> FastMCP: function main (line 282) | async def main(): FILE: ufo/client/mcp/local_servers/pdf_reader_mcp_server.py function create_pdf_reader_mcp_server (line 43) | def create_pdf_reader_mcp_server(*args, **kwargs) -> FastMCP: function main (line 281) | async def main(): FILE: ufo/client/mcp/local_servers/ppt_wincom_mcp_server.py class UIServerState (line 40) | class UIServerState: method __new__ (line 44) | def __new__(cls): method __init__ (line 49) | def __init__(self): function create_powerpoint_mcp_server (line 56) | def create_powerpoint_mcp_server(process_name: str) -> FastMCP: function main (line 170) | async def main(): FILE: ufo/client/mcp/local_servers/ui_mcp_server.py function _get_control_rectangle (line 54) | def _get_control_rectangle(control: UIAWrapper) -> Optional[Rect]: function _window2window_info (line 71) | def _window2window_info( function _control2control_info (line 100) | def _control2control_info( class UIServerState (line 129) | class UIServerState: method __new__ (line 133) | def __new__(cls): method __init__ (line 138) | def __init__(self): method initialize_for_window (line 153) | def initialize_for_window(self, window: UIAWrapper) -> None: function _verify_id (line 170) | def _verify_id(id: str, name: str, control_dict: Dict[str, UIAWrapper]): function create_host_action_mcp_server (line 192) | def create_host_action_mcp_server(*args, **kwargs) -> FastMCP: function create_app_action_mcp_server (line 249) | def create_app_action_mcp_server(*args, **kwargs) -> FastMCP: function create_data_mcp_server (line 634) | def create_data_mcp_server(*args, **kwargs) -> FastMCP: FILE: ufo/client/mcp/local_servers/word_wincom_mcp_server.py class UIServerState (line 43) | class UIServerState: method __new__ (line 47) | def __new__(cls): method __init__ (line 52) | def __init__(self): function create_word_mcp_server (line 59) | def create_word_mcp_server(process_name: str, *args, **kwargs) -> FastMCP: function main (line 255) | async def main(): FILE: ufo/client/mcp/mcp_registry.py class MCPRegistry (line 10) | class MCPRegistry: method register_factory (line 20) | def register_factory(cls, name: str, factory: Callable[[], FastMCP] | ... method register_instance (line 30) | def register_instance(cls, name: str, instance: FastMCP) -> None: method get (line 40) | def get(cls, name: str, *args, **kwargs) -> FastMCP: method list (line 56) | def list(cls) -> list: method clear (line 64) | def clear(cls) -> None: method remove (line 73) | def remove(cls, name: str) -> bool: method register_factory_decorator (line 89) | def register_factory_decorator(cls, name: str): method is_registered (line 109) | def is_registered(cls, name: str) -> bool: method get_info (line 118) | def get_info(cls) -> Dict[str, Dict[str, bool]]: FILE: ufo/client/mcp/mcp_server_manager.py class BaseMCPServer (line 14) | class BaseMCPServer(ABC): method __init__ (line 19) | def __init__(self, config: Dict[str, Any]) -> None: method start (line 30) | def start(self, *args, **kwargs) -> None: method stop (line 37) | def stop(self) -> None: method reset (line 44) | def reset(self) -> None: method config (line 51) | def config(self) -> Dict[str, Any]: method namespace (line 59) | def namespace(self) -> str: method server (line 67) | def server(self) -> Optional[MCPServerType]: class HTTPMCPServer (line 75) | class HTTPMCPServer(BaseMCPServer): method start (line 80) | def start(self, *args, **kwargs) -> None: method stop (line 90) | def stop(self) -> None: method reset (line 96) | def reset(self) -> None: class LocalMCPServer (line 103) | class LocalMCPServer(BaseMCPServer): method start (line 108) | def start(self, *args, **kwargs) -> None: method stop (line 127) | def stop(self) -> None: method reset (line 133) | def reset(self) -> None: class StdioMCPServer (line 140) | class StdioMCPServer(BaseMCPServer): method start (line 145) | def start(self, *args, **kwargs) -> None: method stop (line 158) | def stop(self) -> None: method reset (line 164) | def reset(self) -> None: class MCPServerManager (line 171) | class MCPServerManager: method register_server (line 187) | def register_server(cls, namespace: str, server: BaseMCPServer) -> None: method create_mcp_server (line 200) | def create_mcp_server( method get_server (line 225) | def get_server(cls, namespace: str) -> Optional[BaseMCPServer]: method create_or_get_server (line 234) | def create_or_get_server( method reset (line 253) | def reset(self) -> None: FILE: ufo/client/ufo_client.py class UFOClient (line 14) | class UFOClient: method __init__ (line 20) | def __init__( method execute_step (line 53) | async def execute_step(self, response: ServerMessage) -> List[Result]: method execute_actions (line 69) | async def execute_actions(self, commands: Optional[List[Command]]) -> ... method session_id (line 91) | def session_id(self) -> Optional[str]: method session_id (line 99) | def session_id(self, value: Optional[str]): method agent_name (line 110) | def agent_name(self) -> Optional[str]: method agent_name (line 118) | def agent_name(self, value: Optional[str]): method process_name (line 129) | def process_name(self) -> Optional[str]: method process_name (line 137) | def process_name(self, value: Optional[str]): method root_name (line 148) | def root_name(self) -> Optional[str]: method root_name (line 156) | def root_name(self, value: Optional[str]): method reset (line 166) | def reset(self): FILE: ufo/client/websocket.py class UFOWebSocketClient (line 26) | class UFOWebSocketClient: method __init__ (line 33) | def __init__( method connect_and_listen (line 65) | async def connect_and_listen(self): method register_client (line 149) | async def register_client(self): method handle_messages (line 209) | async def handle_messages(self): method recv_loop (line 247) | async def recv_loop(self): method heartbeat_loop (line 262) | async def heartbeat_loop(self, interval: float = 30) -> None: method handle_message (line 279) | async def handle_message(self, msg: str): method start_task (line 305) | async def start_task(self, request_text: str, task_name: str | None): method handle_commands (line 358) | async def handle_commands(self, server_response: ServerMessage): method handle_task_end (line 386) | async def handle_task_end(self, server_response: ServerMessage): method _maybe_retry (line 405) | async def _maybe_retry(self): method is_connected (line 421) | def is_connected(self) -> bool: method ws (line 432) | def ws(self) -> Optional[WebSocketClientProtocol]: method ws (line 439) | def ws(self, value: Optional[WebSocketClientProtocol]): FILE: ufo/config/__init__.py class Config (line 14) | class Config: method __init__ (line 17) | def __init__(self): method get_instance (line 25) | def get_instance(): method load_config (line 34) | def load_config(self, config_path="ufo/config/") -> Dict[str, Any]: method update_api_base (line 84) | def update_api_base(configs: dict, agent: str) -> None: method optimize_configs (line 119) | def optimize_configs(cls, configs: dict) -> Dict[str, Any]: function get_offline_learner_indexer_config (line 135) | def get_offline_learner_indexer_config(): function get_config (line 151) | def get_config() -> Optional[Dict[str, Any]]: FILE: ufo/experience/experience_parser.py class ExperienceLogLoader (line 11) | class ExperienceLogLoader: method __init__ (line 20) | def __init__(self, log_path: str): method group_by_subtask (line 30) | def group_by_subtask( method subtask_partition (line 65) | def subtask_partition(self) -> List[Dict[str, Any]]: method log_path (line 72) | def log_path(self) -> str: FILE: ufo/experience/summarizer.py class ExperienceSummarizer (line 18) | class ExperienceSummarizer: method __init__ (line 23) | def __init__( method build_prompt (line 42) | def build_prompt(self, log_partition: dict) -> list: method get_summary (line 64) | def get_summary(self, prompt_message: list) -> Tuple[dict, float]: method get_summary_list (line 100) | def get_summary_list(self, logs: list) -> Tuple[list, float]: method read_logs (line 120) | def read_logs(log_path: str) -> list: method create_or_update_yaml (line 129) | def create_or_update_yaml(summaries: list, yaml_path: str): method create_or_update_vector_db (line 165) | def create_or_update_vector_db(summaries: list, db_path: str): FILE: ufo/llm/__init__.py class AgentType (line 7) | class AgentType(str, Enum): FILE: ufo/llm/base.py class BaseService (line 12) | class BaseService(abc.ABC): method __init__ (line 14) | def __init__(self, *args, **kwargs): method chat_completion (line 18) | def chat_completion(self, *args, **kwargs): method get_service (line 23) | def get_service( method get_cost_estimator (line 118) | def get_cost_estimator( FILE: ufo/llm/claude.py class ClaudeService (line 14) | class ClaudeService(BaseService): method __init__ (line 19) | def __init__(self, config: Dict[str, Any], agent_type: str): method chat_completion (line 33) | def chat_completion( method process_messages (line 96) | def process_messages( FILE: ufo/llm/cogagent.py class CogAgentService (line 12) | class CogAgentService(BaseService): method __init__ (line 13) | def __init__(self, config, agent_type: str): method chat_completion (line 20) | def chat_completion( FILE: ufo/llm/config_helper.py function get_agent_config (line 13) | def get_agent_config(agent_type: str) -> Dict[str, Any]: function _config_to_dict (line 71) | def _config_to_dict(config_obj: Any) -> Dict[str, Any]: class AgentConfigAccessor (line 95) | class AgentConfigAccessor: method __init__ (line 104) | def __init__(self, config_obj: Any): method __getitem__ (line 113) | def __getitem__(self, key: str) -> Any: method __getattr__ (line 136) | def __getattr__(self, name: str) -> Any: method __contains__ (line 142) | def __contains__(self, key: str) -> bool: method get (line 150) | def get(self, key: str, default: Any = None) -> Any: method to_dict (line 157) | def to_dict(self) -> Dict[str, Any]: FILE: ufo/llm/deepseek.py class DeepSeekService (line 6) | class DeepSeekService(BaseOpenAIService): method __init__ (line 11) | def __init__(self, config, agent_type: str): method chat_completion (line 18) | def chat_completion( FILE: ufo/llm/gemini.py class GeminiService (line 24) | class GeminiService(BaseService): method __init__ (line 29) | def __init__(self, config: Dict[str, Any], agent_type: str): method chat_completion (line 47) | def chat_completion( method process_messages (line 130) | def process_messages(self, messages: List[Dict[str, str]]) -> List[str]: method base64_to_blob (line 159) | def base64_to_blob(self, base64_str: str) -> Dict[str, str]: method get_text_from_all_candidates (line 179) | def get_text_from_all_candidates( method get_gemini_client (line 239) | def get_gemini_client(api_key: str) -> genai.Client: FILE: ufo/llm/grounding_model/omniparser_service.py class OmniParser (line 8) | class OmniParser(BaseService): method __init__ (line 13) | def __init__(self, endpoint: str): method chat_completion (line 20) | def chat_completion( FILE: ufo/llm/llava.py class LlavaService (line 18) | class LlavaService(BaseService): method __init__ (line 19) | def __init__(self, config, agent_type: str): method chat_completion (line 26) | def chat_completion( method _conversation (line 103) | def _conversation(self): class SeparatorStyle (line 130) | class SeparatorStyle(Enum): class Conversation (line 141) | class Conversation: method get_prompt (line 155) | def get_prompt(self): method append_message (line 240) | def append_message(self, role, message): method process_image (line 243) | def process_image( method get_images (line 307) | def get_images(self, return_pil=False): method to_gradio_chatbot (line 319) | def to_gradio_chatbot(self): method copy (line 337) | def copy(self): method dict (line 349) | def dict(self): FILE: ufo/llm/llm_call.py function get_completion (line 14) | def get_completion( function get_completions (line 34) | def get_completions( FILE: ufo/llm/ollama.py class OllamaService (line 20) | class OllamaService(BaseOpenAIService): method __init__ (line 25) | def __init__(self, config, agent_type: str): method chat_completion (line 35) | def chat_completion( FILE: ufo/llm/openai.py class BaseOpenAIService (line 28) | class BaseOpenAIService(BaseService): method __init__ (line 29) | def __init__( method _chat_completion (line 93) | def _chat_completion( method _responses_completion (line 231) | def _responses_completion( method _messages_to_responses_input (line 301) | def _messages_to_responses_input( method _extract_responses_text (line 342) | def _extract_responses_text(response: Dict[str, Any]) -> str: method _chat_completion_operator (line 361) | def _chat_completion_operator( method get_openai_client (line 408) | def get_openai_client( method get_aad_token_provider (line 476) | def get_aad_token_provider( class OpenAIService (line 634) | class OpenAIService(BaseOpenAIService): method __init__ (line 639) | def __init__(self, config: Dict[str, Any], agent_type: str) -> None: method chat_completion (line 652) | def chat_completion( class OpenAIBetaClient (line 692) | class OpenAIBetaClient: method __init__ (line 696) | def __init__(self, endpoint: str, api_version: str): method get_responses (line 709) | def get_responses( method post_request (line 760) | def post_request(self, url: str, data: Json, headers: Json) -> Json: method _handle_exception (line 785) | def _handle_exception(self, exception: urllib.error.HTTPError) -> None: method compact (line 802) | def compact(data: Json) -> Json: class OperatorServicePreview (line 809) | class OperatorServicePreview(BaseService): method __init__ (line 814) | def __init__( method get_openai_client (line 834) | def get_openai_client(self): method chat_completion (line 859) | def chat_completion( method get_token_provider (line 904) | def get_token_provider(self): class OpenAIError (line 920) | class OpenAIError(Exception): method __init__ (line 925) | def __init__(self, status_code: int, message: Dict[str, Any], request_... method __str__ (line 937) | def __str__(self): FILE: ufo/llm/placeholder.py class PlaceHolderService (line 6) | class PlaceHolderService(BaseService): method __init__ (line 11) | def __init__(self, config: Dict[str, Any], agent_type: str): method chat_completion (line 22) | def chat_completion( FILE: ufo/llm/qwen.py class QwenService (line 6) | class QwenService(BaseOpenAIService): method __init__ (line 11) | def __init__(self, config, agent_type: str): method chat_completion (line 23) | def chat_completion( FILE: ufo/llm/response_schema.py class HostAgentResponse (line 5) | class HostAgentResponse(BaseModel): class SaveScreenshotConfig (line 40) | class SaveScreenshotConfig(BaseModel): class AppAgentResponse (line 47) | class AppAgentResponse(BaseModel): class EvaluationSubsore (line 79) | class EvaluationSubsore(BaseModel): class EvaluationResponse (line 87) | class EvaluationResponse(BaseModel): FILE: ufo/logging/setup.py class ColorFormatter (line 16) | class ColorFormatter(logging.Formatter): method format (line 17) | def format(self, record): function setup_logger (line 23) | def setup_logger(level: str = logging.INFO): FILE: ufo/module/basic.py function _safe_console_text (line 48) | def _safe_console_text(text: str) -> str: class FileWriter (line 58) | class FileWriter: method __init__ (line 64) | def __init__(self, file_path: str, mode: str = "a"): method write (line 82) | def write(self, message: str) -> None: class BaseRound (line 98) | class BaseRound(ABC): method __init__ (line 105) | def __init__( method _init_context (line 132) | def _init_context(self) -> None: method run (line 156) | async def run(self) -> None: method is_finished (line 193) | def is_finished(self) -> bool: method agent (line 204) | def agent(self) -> BasicAgent: method agent (line 212) | def agent(self, agent: BasicAgent) -> None: method state (line 220) | def state(self) -> AgentState: method state (line 228) | def state(self, state: AgentState) -> None: method step (line 236) | def step(self) -> int: method cost (line 244) | def cost(self) -> float: method subtask_amount (line 252) | def subtask_amount(self) -> int: method subtask_amount (line 260) | def subtask_amount(self, value: int) -> None: method request (line 268) | def request(self) -> str: method id (line 276) | def id(self) -> int: method context (line 284) | def context(self) -> Context: method print_cost (line 291) | def print_cost(self) -> None: method log_path (line 307) | def log_path(self) -> str: method capture_last_snapshot (line 315) | async def capture_last_snapshot(self, sub_round_id: Optional[int] = No... method save_ui_tree (line 391) | async def save_ui_tree(self, save_path: str): method evaluation (line 417) | def evaluation(self) -> None: method application_window (line 424) | def application_window(self) -> UIAWrapper: method application_window (line 432) | def application_window(self, app_window: UIAWrapper) -> None: method application_window_info (line 440) | def application_window_info(self) -> Dict[str, str]: method application_window_info (line 448) | def application_window_info(self, app_window_info: Dict[str, str]) -> ... class BaseSession (line 456) | class BaseSession(ABC): method __init__ (line 461) | def __init__(self, task: str, should_evaluate: bool, id: str) -> None: method run (line 490) | async def run(self) -> List[Dict[str, str]]: method _init_agents (line 520) | def _init_agents(self) -> None: method create_new_round (line 530) | def create_new_round(self) -> Optional[BaseRound]: method next_request (line 537) | def next_request(self) -> str: method create_following_round (line 544) | def create_following_round(self) -> BaseRound: method add_round (line 551) | def add_round(self, id: int, round: BaseRound) -> None: method save_log_to_markdown (line 559) | def save_log_to_markdown(self) -> None: method _init_context (line 569) | def _init_context(self) -> None: method id (line 600) | def id(self) -> str: method context (line 608) | def context(self) -> Context: method cost (line 616) | def cost(self) -> float: method cost (line 624) | def cost(self, cost: float) -> None: method application_window (line 632) | def application_window(self) -> UIAWrapper: method application_window (line 640) | def application_window(self, app_window: UIAWrapper) -> None: method application_window_info (line 648) | def application_window_info(self) -> Dict[str, str]: method application_window_info (line 656) | def application_window_info(self, app_window_info: Dict[str, str]) -> ... method step (line 664) | def step(self) -> int: method evaluation_logger (line 672) | def evaluation_logger(self) -> FileWriter: method total_rounds (line 680) | def total_rounds(self) -> int: method rounds (line 688) | def rounds(self) -> Dict[int, BaseRound]: method host_agent (line 696) | def host_agent(self) -> Optional[HostAgent]: method current_round (line 705) | def current_round(self) -> BaseRound: method results (line 716) | def results(self) -> List[Dict[str, str]]: method results (line 724) | def results(self, value: List[Dict[str, str]]) -> None: method experience_saver (line 731) | def experience_saver(self) -> None: method print_cost (line 763) | def print_cost(self) -> None: method is_error (line 785) | def is_error(self): method is_finished (line 794) | def is_finished(self) -> bool: method request_to_evaluate (line 812) | def request_to_evaluate(self) -> str: method reset (line 820) | def reset(self) -> None: method evaluation (line 826) | def evaluation(self) -> None: method results (line 880) | def results(self) -> List[Dict[str, str]]: method results (line 888) | def results(self, value: List[Dict[str, str]]): method session_type (line 896) | def session_type(self) -> str: method current_agent_class (line 904) | def current_agent_class(self) -> str: method capture_last_snapshot (line 911) | async def capture_last_snapshot(self) -> None: method capture_last_screenshot (line 936) | async def capture_last_screenshot( method capture_last_ui_tree (line 972) | async def capture_last_ui_tree(self, save_path: str) -> None: method initialize_logger (line 993) | def initialize_logger(log_path: str, log_filename: str, mode="a") -> l... FILE: ufo/module/context.py class ContextNames (line 24) | class ContextNames(Enum): method default_value (line 75) | def default_value(self) -> Any: method type (line 139) | def type(self) -> Type: class Context (line 197) | class Context: method get (line 207) | def get(self, key: ContextNames) -> Any: method set (line 217) | def set(self, key: ContextNames, value: Any) -> None: method _sync_round_values (line 235) | def _sync_round_values(self): method update_dict (line 245) | def update_dict(self, key: ContextNames, value: Dict[str, Any]) -> None: method current_round_cost (line 263) | def current_round_cost(self) -> Optional[float]: method current_round_cost (line 272) | def current_round_cost(self, value: Optional[float]) -> None: method current_round_step (line 281) | def current_round_step(self) -> int: method current_round_step (line 290) | def current_round_step(self, value: int) -> None: method current_round_subtask_amount (line 299) | def current_round_subtask_amount(self) -> int: method current_round_subtask_amount (line 308) | def current_round_subtask_amount(self, value: int) -> None: method add_to_structural_logs (line 316) | def add_to_structural_logs(self, data: Dict[str, Any]) -> None: method filter_structural_logs (line 333) | def filter_structural_logs( method to_dict (line 355) | def to_dict(self, ensure_serializable: bool = False) -> Dict[str, Any]: method from_dict (line 379) | def from_dict(self, context_dict: Dict[str, Any]) -> None: method attach_command_dispatcher (line 391) | def attach_command_dispatcher( FILE: ufo/module/dispatcher.py class BasicCommandDispatcher (line 25) | class BasicCommandDispatcher(ABC): method execute_commands (line 32) | async def execute_commands( method generate_error_results (line 43) | def generate_error_results( class LocalCommandDispatcher (line 67) | class LocalCommandDispatcher(BasicCommandDispatcher): method __init__ (line 72) | def __init__( method execute_commands (line 93) | async def execute_commands( class WebSocketCommandDispatcher (line 134) | class WebSocketCommandDispatcher(BasicCommandDispatcher): method __init__ (line 141) | def __init__( method register_observer (line 164) | def register_observer( method make_server_response (line 174) | def make_server_response(self, commands: List[Command]) -> ServerMessage: method execute_commands (line 206) | async def execute_commands( method set_result (line 244) | async def set_result(self, response_id: str, result: ClientMessage) ->... FILE: ufo/module/interactor.py function first_request (line 26) | def first_request() -> str: function new_request (line 70) | def new_request() -> Tuple[str, bool]: function experience_asker (line 108) | def experience_asker() -> bool: function question_asker (line 148) | def question_asker(question: str, index: int) -> str: function sensitive_step_asker (line 178) | def sensitive_step_asker(action, control_text) -> bool: FILE: ufo/module/session_pool.py class SessionPool (line 29) | class SessionPool: method __init__ (line 34) | def __init__(self, session_list: List[BaseSession]) -> None: method run_all (line 41) | async def run_all(self) -> None: method session_list (line 50) | def session_list(self) -> List[BaseSession]: method add_session (line 57) | def add_session(self, session: BaseSession) -> None: method next_session (line 64) | def next_session(self) -> BaseSession: class SessionFactory (line 72) | class SessionFactory: method create_session (line 80) | def create_session( method _create_windows_session (line 114) | def _create_windows_session( method _create_linux_session (line 180) | def _create_linux_session( method _create_mobile_session (line 226) | def _create_mobile_session( method create_service_session (line 270) | def create_service_session( method create_follower_session_in_batch (line 323) | def create_follower_session_in_batch( method create_sessions_in_batch (line 346) | def create_sessions_in_batch(self, task: str, plan: str) -> List[BaseS... method is_folder (line 386) | def is_folder(path: str) -> bool: method get_plan_files (line 395) | def get_plan_files(path: str) -> List[str]: method get_file_name_without_extension (line 403) | def get_file_name_without_extension(self, file_path: str) -> str: FILE: ufo/module/sessions/linux_session.py class LinuxSession (line 26) | class LinuxSession(LinuxBaseSession): method __init__ (line 33) | def __init__( method _init_context (line 54) | def _init_context(self) -> None: method create_new_round (line 67) | def create_new_round(self) -> Optional[BaseRound]: method next_request (line 88) | def next_request(self) -> str: method request_to_evaluate (line 104) | def request_to_evaluate(self) -> str: class LinuxServiceSession (line 116) | class LinuxServiceSession(LinuxSession): method __init__ (line 123) | def __init__( method _init_context (line 144) | def _init_context(self) -> None: FILE: ufo/module/sessions/mobile_session.py class MobileSession (line 26) | class MobileSession(MobileBaseSession): method __init__ (line 33) | def __init__( method _init_context (line 54) | def _init_context(self) -> None: method create_new_round (line 67) | def create_new_round(self) -> Optional[BaseRound]: method next_request (line 88) | def next_request(self) -> str: method request_to_evaluate (line 104) | def request_to_evaluate(self) -> str: class MobileServiceSession (line 116) | class MobileServiceSession(MobileSession): method __init__ (line 124) | def __init__( method _init_context (line 145) | def _init_context(self) -> None: FILE: ufo/module/sessions/plan_reader.py class PlanReader (line 13) | class PlanReader: method __init__ (line 18) | def __init__(self, plan_file: str): method get_close (line 30) | def get_close(self) -> bool: method get_task (line 38) | def get_task(self) -> str: method get_steps (line 46) | def get_steps(self) -> List[str]: method get_operation_object (line 54) | def get_operation_object(self) -> str: method get_initial_request (line 62) | def get_initial_request(self) -> str: method get_host_agent_request (line 75) | def get_host_agent_request(self) -> str: method get_file_path (line 90) | def get_file_path(self): method get_support_apps (line 103) | def get_support_apps(self) -> List[str]: method get_host_request (line 111) | def get_host_request(self) -> str: method next_step (line 128) | def next_step(self) -> Optional[str]: method task_finished (line 140) | def task_finished(self) -> bool: method get_root_path (line 148) | def get_root_path(self) -> str: FILE: ufo/module/sessions/platform_session.py class WindowsBaseSession (line 20) | class WindowsBaseSession(BaseSession): method _init_agents (line 27) | def _init_agents(self) -> None: method reset (line 41) | def reset(self): class LinuxBaseSession (line 49) | class LinuxBaseSession(BaseSession): method _init_agents (line 56) | def _init_agents(self) -> None: method evaluation (line 74) | def evaluation(self) -> None: method save_log_to_markdown (line 82) | def save_log_to_markdown(self) -> None: method reset (line 90) | def reset(self) -> None: class MobileBaseSession (line 98) | class MobileBaseSession(BaseSession): method _init_agents (line 105) | def _init_agents(self) -> None: method evaluation (line 125) | def evaluation(self) -> None: method save_log_to_markdown (line 133) | def save_log_to_markdown(self) -> None: method reset (line 141) | def reset(self) -> None: FILE: ufo/module/sessions/service_session.py class ServiceSession (line 16) | class ServiceSession(Session): method __init__ (line 21) | def __init__( method _init_context (line 43) | def _init_context(self) -> None: method next_request (line 55) | def next_request(self) -> str: FILE: ufo/module/sessions/session.py class Session (line 41) | class Session(WindowsBaseSession): method __init__ (line 46) | def __init__( method run (line 69) | async def run(self) -> None: method _init_context (line 94) | def _init_context(self) -> None: method create_new_round (line 105) | def create_new_round(self) -> Optional[BaseRound]: method next_request (line 132) | def next_request(self) -> str: method request_to_evaluate (line 151) | def request_to_evaluate(self) -> str: class FollowerSession (line 160) | class FollowerSession(WindowsBaseSession): method __init__ (line 166) | def __init__( method _init_context (line 181) | def _init_context(self) -> None: method create_new_round (line 192) | def create_new_round(self) -> None: method next_request (line 232) | def next_request(self) -> str: method request_to_evaluate (line 248) | def request_to_evaluate(self) -> str: class FromFileSession (line 257) | class FromFileSession(WindowsBaseSession): method __init__ (line 262) | def __init__( method _init_context (line 281) | def _init_context(self) -> None: method create_new_round (line 289) | def create_new_round(self) -> None: method next_request (line 315) | def next_request(self) -> str: method get_app_name (line 328) | def get_app_name(self, object_name: str) -> str: method get_app_com (line 344) | def get_app_com(self, object_name: str) -> str: method run (line 358) | def run(self) -> None: method terminate_application_processes (line 374) | def terminate_application_processes(self): method setup_application_environment (line 391) | def setup_application_environment(self): method request_to_evaluate (line 420) | def request_to_evaluate(self) -> str: method record_task_done (line 427) | def record_task_done(self) -> None: class OpenAIOperatorSession (line 446) | class OpenAIOperatorSession(Session): method __init__ (line 451) | def __init__( method refine_request (line 484) | def refine_request(self, request: str) -> str: method run (line 496) | async def run(self) -> None: method capture_last_screenshot (line 521) | async def capture_last_screenshot( FILE: ufo/prompter/agent_prompter.py class HostAgentPrompter (line 13) | class HostAgentPrompter(BasicPrompter): method __init__ (line 18) | def __init__( method create_api_prompt_template (line 35) | def create_api_prompt_template(self, tools: List[MCPToolInfo]): method system_prompt_construction (line 42) | def system_prompt_construction(self) -> str: method user_prompt_construction (line 60) | def user_prompt_construction( method third_party_agent_instruction (line 87) | def third_party_agent_instruction( method user_content_construction (line 106) | def user_content_construction( method examples_prompt_helper (line 150) | def examples_prompt_helper( method api_prompt_helper (line 178) | def api_prompt_helper(self, verbose: int = 1) -> str: class AppAgentPrompter (line 192) | class AppAgentPrompter(BasicPrompter): method __init__ (line 197) | def __init__( method create_api_prompt_template (line 214) | def create_api_prompt_template(self, tools: List[MCPToolInfo]): method system_prompt_construction (line 221) | def system_prompt_construction(self, additional_examples: List[str] = ... method user_prompt_construction (line 241) | def user_prompt_construction( method user_content_construction (line 281) | def user_content_construction( method examples_prompt_helper (line 342) | def examples_prompt_helper( method action2action_sequence (line 394) | def action2action_sequence(response: Dict[str, Any]) -> Dict[str, Any]: method api_prompt_helper (line 418) | def api_prompt_helper(self, verbose: int = 1) -> str: FILE: ufo/prompter/basic.py class BasicPrompter (line 16) | class BasicPrompter(ABC): method __init__ (line 21) | def __init__( method load_prompt_template (line 45) | def load_prompt_template(template_path: str, is_visual=None) -> Dict[s... method prompt_construction (line 72) | def prompt_construction( method retrieved_documents_prompt_helper (line 90) | def retrieved_documents_prompt_helper( method tool_to_llm_prompt (line 114) | def tool_to_llm_prompt( method tools_to_llm_prompt (line 157) | def tools_to_llm_prompt( method system_prompt_construction (line 172) | def system_prompt_construction(self) -> str: method user_prompt_construction (line 180) | def user_prompt_construction(self) -> str: method user_content_construction (line 188) | def user_content_construction(self) -> str: method examples_prompt_helper (line 195) | def examples_prompt_helper(self) -> str: method api_prompt_helper (line 202) | def api_prompt_helper(self) -> str: FILE: ufo/prompter/customized/linux_agent_prompter.py class LinuxAgentPrompter (line 12) | class LinuxAgentPrompter(AppAgentPrompter): method __init__ (line 17) | def __init__( method system_prompt_construction (line 33) | def system_prompt_construction(self, additional_examples: List[str] = ... method user_prompt_construction (line 45) | def user_prompt_construction( method user_content_construction (line 75) | def user_content_construction( method examples_prompt_helper (line 112) | def examples_prompt_helper( method api_prompt_helper (line 150) | def api_prompt_helper(self, verbose: int = 1) -> str: FILE: ufo/prompter/customized/mobile_agent_prompter.py class MobileAgentPrompter (line 12) | class MobileAgentPrompter(AppAgentPrompter): method __init__ (line 17) | def __init__( method system_prompt_construction (line 30) | def system_prompt_construction(self, additional_examples: List[str] = ... method user_prompt_construction (line 42) | def user_prompt_construction( method user_content_construction (line 72) | def user_content_construction( method examples_prompt_helper (line 132) | def examples_prompt_helper( method api_prompt_helper (line 169) | def api_prompt_helper(self, verbose: int = 1) -> str: FILE: ufo/prompter/demonstration_prompter.py class DemonstrationPrompter (line 12) | class DemonstrationPrompter(BasicPrompter): method __init__ (line 17) | def __init__( method system_prompt_construction (line 34) | def system_prompt_construction(self) -> str: method user_prompt_construction (line 46) | def user_prompt_construction(self, user_request: str) -> str: method user_content_construction (line 58) | def user_content_construction( method api_prompt_helper (line 113) | def api_prompt_helper(self, verbose: int = 1) -> str: method examples_prompt_helper (line 143) | def examples_prompt_helper( FILE: ufo/prompter/eva_prompter.py class EvaluationAgentPrompter (line 16) | class EvaluationAgentPrompter(BasicPrompter): method __init__ (line 21) | def __init__( method system_prompt_construction (line 37) | def system_prompt_construction(self) -> str: method user_prompt_construction (line 60) | def user_prompt_construction( method user_content_construction (line 78) | def user_content_construction( method user_content_construction_head_tail (line 93) | def user_content_construction_head_tail( method _is_valid_screenshot (line 151) | def _is_valid_screenshot(image) -> bool: method _is_valid_screenshot_str (line 171) | def _is_valid_screenshot_str(screenshot_str: str) -> bool: method user_content_construction_all (line 188) | def user_content_construction_all( method get_step_trajectory (line 267) | def get_step_trajectory(self, log: Dict[str, str]) -> Dict[str, str]: method load_logs (line 287) | def load_logs(log_path: str) -> parser.Trajectory: method load_screenshots (line 294) | def load_screenshots(self, log_path: str) -> List[str]: method load_single_screenshot (line 308) | def load_single_screenshot(screenshot_path: str) -> str: method examples_prompt_helper (line 317) | def examples_prompt_helper( method create_api_prompt_template (line 349) | def create_api_prompt_template(self, tool_info_dict: Dict[str, Any]) -... method api_prompt_helper (line 366) | def api_prompt_helper(self) -> str: FILE: ufo/prompter/experience_prompter.py class ExperiencePrompter (line 15) | class ExperiencePrompter(BasicPrompter): method __init__ (line 20) | def __init__( method system_prompt_construction (line 36) | def system_prompt_construction(self) -> str: method user_prompt_construction (line 48) | def user_prompt_construction(self, user_request: str) -> str: method user_content_construction (line 60) | def user_content_construction( method _filter_log (line 104) | def _filter_log(self, log: Dict[str, Any]) -> List[Dict[str, Any]]: method _filter_logs (line 131) | def _filter_logs(self, logs: List[Dict[str, Any]]) -> List[Dict[str, A... method api_prompt_helper (line 142) | def api_prompt_helper(self, verbose: int = 1) -> str: method examples_prompt_helper (line 173) | def examples_prompt_helper( FILE: ufo/prompter/prompt_sanitizer.py function sanitize_user_input (line 60) | def sanitize_user_input(value: str, field_name: str = "input") -> str: FILE: ufo/rag/retriever.py class RetrieverFactory (line 16) | class RetrieverFactory: method create_retriever (line 22) | def create_retriever(retriever_type: str, *args, **kwargs): class Retriever (line 40) | class Retriever(ABC): method __init__ (line 45) | def __init__(self) -> None: method get_indexer (line 55) | def get_indexer(self): method retrieve (line 62) | def retrieve(self, query: str, top_k: int, filter=None): class OfflineDocRetriever (line 81) | class OfflineDocRetriever(Retriever): method __init__ (line 86) | def __init__(self, app_name: str) -> None: method get_offline_indexer_path (line 95) | def get_offline_indexer_path(self): method get_indexer (line 107) | def get_indexer(self, path: str): class ExperienceRetriever (line 131) | class ExperienceRetriever(Retriever): method __init__ (line 136) | def __init__(self, db_path) -> None: method get_indexer (line 143) | def get_indexer(self, db_path: str): class OnlineDocRetriever (line 163) | class OnlineDocRetriever(Retriever): method __init__ (line 168) | def __init__(self, query: str, top_k: int) -> None: method get_indexer (line 177) | def get_indexer(self, top_k: int): class DemonstrationRetriever (line 201) | class DemonstrationRetriever(Retriever): method __init__ (line 206) | def __init__(self, db_path) -> None: method get_indexer (line 213) | def get_indexer(self, db_path: str): FILE: ufo/rag/web_search.py class BingSearchWeb (line 17) | class BingSearchWeb: method __init__ (line 22) | def __init__(self): method search (line 28) | def search(self, query: str, top_k: int = 1): method get_url_text (line 53) | def get_url_text(self, url: str): method create_documents (line 78) | def create_documents(self, result_list: list): method create_indexer (line 100) | def create_indexer(self, documents: list): FILE: ufo/server/app.py function parse_args (line 9) | def parse_args(): function websocket_endpoint (line 96) | async def websocket_endpoint(websocket: WebSocket, token: str = Query(de... FILE: ufo/server/services/api.py function _make_auth_dependency (line 16) | def _make_auth_dependency(api_key: str): function create_api_router (line 26) | def create_api_router( FILE: ufo/server/services/client_connection_manager.py class ClientInfo (line 15) | class ClientInfo: class ClientConnectionManager (line 30) | class ClientConnectionManager: method __init__ (line 43) | def __init__(self, device_config_path: Optional[str] = None): method add_constellation_session (line 63) | def add_constellation_session(self, client_id: str, session_id: str): method get_constellation_sessions (line 75) | def get_constellation_sessions(self, client_id: str) -> List[str]: method remove_constellation_sessions (line 85) | def remove_constellation_sessions(self, client_id: str) -> List[str]: method add_device_session (line 95) | def add_device_session(self, device_id: str, session_id: str): method get_device_sessions (line 107) | def get_device_sessions(self, device_id: str) -> List[str]: method remove_device_sessions (line 117) | def remove_device_sessions(self, device_id: str) -> List[str]: method add_client (line 127) | def add_client( method remove_client (line 177) | def remove_client(self, client_id: str): method get_client (line 185) | def get_client(self, client_id: str) -> WebSocket: method get_client_info (line 195) | def get_client_info(self, client_id: str) -> ClientInfo: method get_task_protocol (line 204) | def get_task_protocol(self, client_id: str) -> Optional[TaskExecutionP... method get_client_type (line 214) | def get_client_type(self, client_id: str) -> str: method list_clients (line 224) | def list_clients(self) -> List[str]: method is_device_connected (line 232) | def is_device_connected(self, device_id: str) -> bool: method list_clients_by_type (line 244) | def list_clients_by_type(self, client_type: ClientType) -> List[str]: method get_stats (line 257) | def get_stats(self) -> Dict[str, int]: method get_device_system_info (line 279) | def get_device_system_info(self, device_id: str) -> Optional[Dict[str,... method get_all_devices_info (line 292) | def get_all_devices_info(self) -> Dict[str, Dict[str, Any]]: method _load_device_configs (line 306) | def _load_device_configs(self, config_path: str) -> None: method _merge_device_info (line 367) | def _merge_device_info( FILE: ufo/server/services/session_manager.py class SessionManager (line 20) | class SessionManager: method __init__ (line 26) | def __init__(self, platform_override: Optional[str] = None): method get_or_create_session (line 53) | def get_or_create_session( method get_result (line 111) | def get_result(self, session_id: str) -> Optional[Dict[str, any]]: method get_result_by_task (line 122) | def get_result_by_task(self, task_name: str) -> Optional[Dict[str, any]]: method set_results (line 133) | def set_results(self, session_id: str): method remove_session (line 142) | def remove_session(self, session_id: str): method execute_task_async (line 151) | async def execute_task_async( method cancel_task (line 197) | async def cancel_task( method _run_session_background (line 237) | async def _run_session_background( FILE: ufo/server/ws/handler.py class UFOWebSocketHandler (line 19) | class UFOWebSocketHandler: method __init__ (line 25) | def __init__( method connect (line 49) | async def connect(self, websocket: WebSocket) -> str: method _parse_registration_message (line 101) | async def _parse_registration_message(self) -> ClientMessage: method _validate_constellation_client (line 125) | async def _validate_constellation_client(self, reg_info: ClientMessage... method _send_registration_confirmation (line 147) | async def _send_registration_confirmation(self) -> None: method _send_error_response (line 155) | async def _send_error_response(self, error_msg: str) -> None: method _log_client_connection (line 162) | def _log_client_connection(self, client_id: str, client_type: ClientTy... method disconnect (line 183) | async def disconnect(self, client_id: str) -> None: method handler (line 238) | async def handler(self, websocket: WebSocket) -> None: method handle_message (line 261) | async def handle_message(self, msg: str) -> None: method handle_heartbeat (line 315) | async def handle_heartbeat(self, data: ClientMessage) -> None: method handle_error (line 330) | async def handle_error(self, data: ClientMessage) -> None: method handle_unknown (line 339) | async def handle_unknown(self, data: ClientMessage) -> None: method handle_task_request (line 347) | async def handle_task_request(self, data: ClientMessage) -> None: method handle_command_result (line 496) | async def handle_command_result(self, data: ClientMessage) -> None: method handle_device_info_response (line 516) | async def handle_device_info_response(self, data: ClientMessage) -> None: method handle_device_info_request (line 525) | async def handle_device_info_request(self, data: ClientMessage) -> None: method get_device_info (line 550) | async def get_device_info(self, device_id: str) -> dict: FILE: ufo/tools/convert_config.py class ConfigConverter (line 46) | class ConfigConverter: method __init__ (line 169) | def __init__( method load_yaml (line 187) | def load_yaml(self, file_path: Path) -> Dict[str, Any]: method save_yaml (line 205) | def save_yaml( method split_config (line 242) | def split_config(self, config_data: Dict[str, Any]) -> Dict[str, Dict[... method convert_legacy_config (line 269) | def convert_legacy_config(self) -> Dict[str, Dict[str, Any]]: method create_backup (line 308) | def create_backup(self) -> Optional[Path]: method write_converted_configs (line 330) | def write_converted_configs( method show_summary (line 371) | def show_summary( method show_next_steps (line 394) | def show_next_steps(self) -> None: method run (line 419) | def run(self, dry_run: bool = False, force: bool = False) -> bool: function main (line 497) | def main(): FILE: ufo/tools/migrate_config.py class ConfigMigrator (line 41) | class ConfigMigrator: method __init__ (line 53) | def __init__( method check_legacy_exists (line 71) | def check_legacy_exists(self) -> bool: method check_new_exists (line 79) | def check_new_exists(self) -> bool: method discover_files (line 87) | def discover_files(self) -> List[Path]: method create_backup (line 98) | def create_backup(self) -> Path: method migrate_files (line 114) | def migrate_files(self, dry_run: bool = False) -> List[Tuple[Path, Pat... method show_summary (line 140) | def show_summary( method show_next_steps (line 164) | def show_next_steps(self) -> None: method run (line 185) | def run(self, dry_run: bool = False, force: bool = False) -> bool: function main (line 275) | def main(): FILE: ufo/tools/test_config.py function test_ufo_config (line 18) | def test_ufo_config(): function test_galaxy_config (line 65) | def test_galaxy_config(): function test_path_detection (line 110) | def test_path_detection(): function main (line 153) | def main(): FILE: ufo/tools/validate_config.py class ConfigValidator (line 37) | class ConfigValidator: method __init__ (line 58) | def __init__(self, module: str): method check_paths (line 71) | def check_paths(self) -> Tuple[bool, bool]: method validate_structure (line 85) | def validate_structure(self) -> bool: method validate_fields (line 118) | def validate_fields(self, config: Dict[str, Any]) -> bool: method validate_api_config (line 160) | def validate_api_config(self, config: Dict[str, Any]) -> None: method show_tree (line 195) | def show_tree(self, path: Path) -> None: method show_report (line 211) | def show_report(self, config: Dict[str, Any] = None) -> None: method validate (line 287) | def validate(self, show_config: bool = False) -> bool: method show_configuration (line 330) | def show_configuration(self, config: Dict[str, Any]) -> None: function main (line 366) | def main(): FILE: ufo/trajectory/parser.py class Trajectory (line 22) | class Trajectory: method __init__ (line 39) | def __init__(self, file_path: str) -> None: method _load_response_data (line 54) | def _load_response_data(self) -> List[Dict[str, Any]]: method _load_all_data (line 80) | def _load_all_data(self) -> Dict[str, Any]: method load_screenshot (line 96) | def load_screenshot(screenshot_path: str) -> Image.Image: method _load_single_screenshot (line 108) | def _load_single_screenshot( method _load_step_screenshots (line 135) | def _load_step_screenshots( method _load_evaluation_data (line 150) | def _load_evaluation_data(self) -> Dict[str, Any]: method _load_round_screenshot (line 171) | def _load_round_screenshot(self, round_number: int) -> Optional[Image.... method round_screenshots (line 217) | def round_screenshots(self) -> Dict[int, Dict[str, Any]]: method request (line 230) | def request(self) -> str: method get_subtask (line 239) | def get_subtask(cls, folder_path: str, round_number: int) -> int: method response_file_path (line 268) | def response_file_path(self) -> str: method step_log (line 275) | def step_log(self) -> List[Dict[str, Any]]: method evaluation_log (line 282) | def evaluation_log(self) -> Dict[str, Any]: method host_agent_log (line 289) | def host_agent_log(self) -> Dict[str, Any]: method app_agent_log (line 303) | def app_agent_log(self) -> Dict[str, Any]: method final_screenshot_path (line 317) | def final_screenshot_path(self) -> str: method final_screenshot_image (line 325) | def final_screenshot_image(self) -> Image.Image: method round_number (line 332) | def round_number(self) -> int: method step_number (line 349) | def step_number(self) -> int: method structured_data (line 365) | def structured_data(self) -> Dict[str, Any]: method to_markdown (line 371) | def to_markdown( FILE: ufo/ufo.py function main (line 51) | async def main(): FILE: ufo/utils/__init__.py function print_with_color (line 31) | def print_with_color(text: str, color: str = "", end: str = "\n") -> None: function create_folder (line 55) | def create_folder(folder_path: str) -> None: function check_json_format (line 65) | def check_json_format(string: str) -> bool: function json_parser (line 80) | def json_parser(json_string: str) -> Dict[str, Any]: function is_json_serializable (line 94) | def is_json_serializable(obj: Any) -> bool: function revise_line_breaks (line 107) | def revise_line_breaks(args: Dict[str, Any]) -> Dict[str, Any]: function LazyImport (line 124) | def LazyImport(module_name: str) -> Any: function find_desktop_path (line 135) | def find_desktop_path() -> Optional[str]: function append_string_to_file (line 151) | def append_string_to_file(file_path: str, string: str) -> None: function get_hugginface_embedding (line 169) | def get_hugginface_embedding( function coordinate_adjusted (line 182) | def coordinate_adjusted(window_rect: RECT, control_rect: RECT) -> Tuple: function coordinate_adjusted_to_relative (line 200) | def coordinate_adjusted_to_relative(window_rect: RECT, control_rect: REC... function decode_base64_image (line 221) | def decode_base64_image(base64_string: str) -> bytes: function encode_image_from_path (line 258) | def encode_image_from_path(image_path: str, mime_type: Optional[str] = N... function encode_image (line 291) | def encode_image(image: Image.Image, mime_type: Optional[str] = None) ->... function load_image (line 313) | def load_image(image_path: str) -> Image.Image: function save_image_string (line 347) | def save_image_string(image_string: str, save_path: str) -> Image.Image: