Files
2026-07-13 12:49:17 +08:00

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