57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
# Copyright (c) 2025 ByteDance Ltd. and/or its affiliates
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
"""Console factory for creating different types of CLI consoles."""
|
|
|
|
from trae_agent.utils.config import LakeviewConfig
|
|
|
|
from .cli_console import CLIConsole, ConsoleMode, ConsoleType
|
|
from .rich_console import RichCLIConsole
|
|
from .simple_console import SimpleCLIConsole
|
|
|
|
|
|
class ConsoleFactory:
|
|
"""Factory class for creating CLI console instances."""
|
|
|
|
@staticmethod
|
|
def create_console(
|
|
console_type: ConsoleType,
|
|
mode: ConsoleMode = ConsoleMode.RUN,
|
|
lakeview_config: LakeviewConfig | None = None,
|
|
) -> CLIConsole:
|
|
"""Create a console instance based on type and mode.
|
|
|
|
Args:
|
|
console_type: Type of console to create (SIMPLE or RICH)
|
|
mode: Console operation mode (RUN or INTERACTIVE)
|
|
config: Configuration object
|
|
|
|
Returns:
|
|
CLIConsole instance
|
|
|
|
Raises:
|
|
ValueError: If console_type is not supported
|
|
"""
|
|
|
|
if console_type == ConsoleType.SIMPLE:
|
|
return SimpleCLIConsole(mode=mode, lakeview_config=lakeview_config)
|
|
elif console_type == ConsoleType.RICH:
|
|
return RichCLIConsole(mode=mode, lakeview_config=lakeview_config)
|
|
|
|
@staticmethod
|
|
def get_recommended_console_type(mode: ConsoleMode) -> ConsoleType:
|
|
"""Get the recommended console type for a given mode.
|
|
|
|
Args:
|
|
mode: Console operation mode
|
|
|
|
Returns:
|
|
Recommended console type
|
|
"""
|
|
# Rich console is ideal for interactive mode
|
|
if mode == ConsoleMode.INTERACTIVE:
|
|
return ConsoleType.RICH
|
|
# Simple console works well for run mode
|
|
else:
|
|
return ConsoleType.SIMPLE
|