fast-agent-mcp 0.4.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fast_agent/__init__.py +183 -0
- fast_agent/acp/__init__.py +19 -0
- fast_agent/acp/acp_aware_mixin.py +304 -0
- fast_agent/acp/acp_context.py +437 -0
- fast_agent/acp/content_conversion.py +136 -0
- fast_agent/acp/filesystem_runtime.py +427 -0
- fast_agent/acp/permission_store.py +269 -0
- fast_agent/acp/server/__init__.py +5 -0
- fast_agent/acp/server/agent_acp_server.py +1472 -0
- fast_agent/acp/slash_commands.py +1050 -0
- fast_agent/acp/terminal_runtime.py +408 -0
- fast_agent/acp/tool_permission_adapter.py +125 -0
- fast_agent/acp/tool_permissions.py +474 -0
- fast_agent/acp/tool_progress.py +814 -0
- fast_agent/agents/__init__.py +85 -0
- fast_agent/agents/agent_types.py +64 -0
- fast_agent/agents/llm_agent.py +350 -0
- fast_agent/agents/llm_decorator.py +1139 -0
- fast_agent/agents/mcp_agent.py +1337 -0
- fast_agent/agents/tool_agent.py +271 -0
- fast_agent/agents/workflow/agents_as_tools_agent.py +849 -0
- fast_agent/agents/workflow/chain_agent.py +212 -0
- fast_agent/agents/workflow/evaluator_optimizer.py +380 -0
- fast_agent/agents/workflow/iterative_planner.py +652 -0
- fast_agent/agents/workflow/maker_agent.py +379 -0
- fast_agent/agents/workflow/orchestrator_models.py +218 -0
- fast_agent/agents/workflow/orchestrator_prompts.py +248 -0
- fast_agent/agents/workflow/parallel_agent.py +250 -0
- fast_agent/agents/workflow/router_agent.py +353 -0
- fast_agent/cli/__init__.py +0 -0
- fast_agent/cli/__main__.py +73 -0
- fast_agent/cli/commands/acp.py +159 -0
- fast_agent/cli/commands/auth.py +404 -0
- fast_agent/cli/commands/check_config.py +783 -0
- fast_agent/cli/commands/go.py +514 -0
- fast_agent/cli/commands/quickstart.py +557 -0
- fast_agent/cli/commands/serve.py +143 -0
- fast_agent/cli/commands/server_helpers.py +114 -0
- fast_agent/cli/commands/setup.py +174 -0
- fast_agent/cli/commands/url_parser.py +190 -0
- fast_agent/cli/constants.py +40 -0
- fast_agent/cli/main.py +115 -0
- fast_agent/cli/terminal.py +24 -0
- fast_agent/config.py +798 -0
- fast_agent/constants.py +41 -0
- fast_agent/context.py +279 -0
- fast_agent/context_dependent.py +50 -0
- fast_agent/core/__init__.py +92 -0
- fast_agent/core/agent_app.py +448 -0
- fast_agent/core/core_app.py +137 -0
- fast_agent/core/direct_decorators.py +784 -0
- fast_agent/core/direct_factory.py +620 -0
- fast_agent/core/error_handling.py +27 -0
- fast_agent/core/exceptions.py +90 -0
- fast_agent/core/executor/__init__.py +0 -0
- fast_agent/core/executor/executor.py +280 -0
- fast_agent/core/executor/task_registry.py +32 -0
- fast_agent/core/executor/workflow_signal.py +324 -0
- fast_agent/core/fastagent.py +1186 -0
- fast_agent/core/logging/__init__.py +5 -0
- fast_agent/core/logging/events.py +138 -0
- fast_agent/core/logging/json_serializer.py +164 -0
- fast_agent/core/logging/listeners.py +309 -0
- fast_agent/core/logging/logger.py +278 -0
- fast_agent/core/logging/transport.py +481 -0
- fast_agent/core/prompt.py +9 -0
- fast_agent/core/prompt_templates.py +183 -0
- fast_agent/core/validation.py +326 -0
- fast_agent/event_progress.py +62 -0
- fast_agent/history/history_exporter.py +49 -0
- fast_agent/human_input/__init__.py +47 -0
- fast_agent/human_input/elicitation_handler.py +123 -0
- fast_agent/human_input/elicitation_state.py +33 -0
- fast_agent/human_input/form_elements.py +59 -0
- fast_agent/human_input/form_fields.py +256 -0
- fast_agent/human_input/simple_form.py +113 -0
- fast_agent/human_input/types.py +40 -0
- fast_agent/interfaces.py +310 -0
- fast_agent/llm/__init__.py +9 -0
- fast_agent/llm/cancellation.py +22 -0
- fast_agent/llm/fastagent_llm.py +931 -0
- fast_agent/llm/internal/passthrough.py +161 -0
- fast_agent/llm/internal/playback.py +129 -0
- fast_agent/llm/internal/silent.py +41 -0
- fast_agent/llm/internal/slow.py +38 -0
- fast_agent/llm/memory.py +275 -0
- fast_agent/llm/model_database.py +490 -0
- fast_agent/llm/model_factory.py +388 -0
- fast_agent/llm/model_info.py +102 -0
- fast_agent/llm/prompt_utils.py +155 -0
- fast_agent/llm/provider/anthropic/anthropic_utils.py +84 -0
- fast_agent/llm/provider/anthropic/cache_planner.py +56 -0
- fast_agent/llm/provider/anthropic/llm_anthropic.py +796 -0
- fast_agent/llm/provider/anthropic/multipart_converter_anthropic.py +462 -0
- fast_agent/llm/provider/bedrock/bedrock_utils.py +218 -0
- fast_agent/llm/provider/bedrock/llm_bedrock.py +2207 -0
- fast_agent/llm/provider/bedrock/multipart_converter_bedrock.py +84 -0
- fast_agent/llm/provider/google/google_converter.py +466 -0
- fast_agent/llm/provider/google/llm_google_native.py +681 -0
- fast_agent/llm/provider/openai/llm_aliyun.py +31 -0
- fast_agent/llm/provider/openai/llm_azure.py +143 -0
- fast_agent/llm/provider/openai/llm_deepseek.py +76 -0
- fast_agent/llm/provider/openai/llm_generic.py +35 -0
- fast_agent/llm/provider/openai/llm_google_oai.py +32 -0
- fast_agent/llm/provider/openai/llm_groq.py +42 -0
- fast_agent/llm/provider/openai/llm_huggingface.py +85 -0
- fast_agent/llm/provider/openai/llm_openai.py +1195 -0
- fast_agent/llm/provider/openai/llm_openai_compatible.py +138 -0
- fast_agent/llm/provider/openai/llm_openrouter.py +45 -0
- fast_agent/llm/provider/openai/llm_tensorzero_openai.py +128 -0
- fast_agent/llm/provider/openai/llm_xai.py +38 -0
- fast_agent/llm/provider/openai/multipart_converter_openai.py +561 -0
- fast_agent/llm/provider/openai/openai_multipart.py +169 -0
- fast_agent/llm/provider/openai/openai_utils.py +67 -0
- fast_agent/llm/provider/openai/responses.py +133 -0
- fast_agent/llm/provider_key_manager.py +139 -0
- fast_agent/llm/provider_types.py +34 -0
- fast_agent/llm/request_params.py +61 -0
- fast_agent/llm/sampling_converter.py +98 -0
- fast_agent/llm/stream_types.py +9 -0
- fast_agent/llm/usage_tracking.py +445 -0
- fast_agent/mcp/__init__.py +56 -0
- fast_agent/mcp/common.py +26 -0
- fast_agent/mcp/elicitation_factory.py +84 -0
- fast_agent/mcp/elicitation_handlers.py +164 -0
- fast_agent/mcp/gen_client.py +83 -0
- fast_agent/mcp/helpers/__init__.py +36 -0
- fast_agent/mcp/helpers/content_helpers.py +352 -0
- fast_agent/mcp/helpers/server_config_helpers.py +25 -0
- fast_agent/mcp/hf_auth.py +147 -0
- fast_agent/mcp/interfaces.py +92 -0
- fast_agent/mcp/logger_textio.py +108 -0
- fast_agent/mcp/mcp_agent_client_session.py +411 -0
- fast_agent/mcp/mcp_aggregator.py +2175 -0
- fast_agent/mcp/mcp_connection_manager.py +723 -0
- fast_agent/mcp/mcp_content.py +262 -0
- fast_agent/mcp/mime_utils.py +108 -0
- fast_agent/mcp/oauth_client.py +509 -0
- fast_agent/mcp/prompt.py +159 -0
- fast_agent/mcp/prompt_message_extended.py +155 -0
- fast_agent/mcp/prompt_render.py +84 -0
- fast_agent/mcp/prompt_serialization.py +580 -0
- fast_agent/mcp/prompts/__init__.py +0 -0
- fast_agent/mcp/prompts/__main__.py +7 -0
- fast_agent/mcp/prompts/prompt_constants.py +18 -0
- fast_agent/mcp/prompts/prompt_helpers.py +238 -0
- fast_agent/mcp/prompts/prompt_load.py +186 -0
- fast_agent/mcp/prompts/prompt_server.py +552 -0
- fast_agent/mcp/prompts/prompt_template.py +438 -0
- fast_agent/mcp/resource_utils.py +215 -0
- fast_agent/mcp/sampling.py +200 -0
- fast_agent/mcp/server/__init__.py +4 -0
- fast_agent/mcp/server/agent_server.py +613 -0
- fast_agent/mcp/skybridge.py +44 -0
- fast_agent/mcp/sse_tracking.py +287 -0
- fast_agent/mcp/stdio_tracking_simple.py +59 -0
- fast_agent/mcp/streamable_http_tracking.py +309 -0
- fast_agent/mcp/tool_execution_handler.py +137 -0
- fast_agent/mcp/tool_permission_handler.py +88 -0
- fast_agent/mcp/transport_tracking.py +634 -0
- fast_agent/mcp/types.py +24 -0
- fast_agent/mcp/ui_agent.py +48 -0
- fast_agent/mcp/ui_mixin.py +209 -0
- fast_agent/mcp_server_registry.py +89 -0
- fast_agent/py.typed +0 -0
- fast_agent/resources/examples/data-analysis/analysis-campaign.py +189 -0
- fast_agent/resources/examples/data-analysis/analysis.py +68 -0
- fast_agent/resources/examples/data-analysis/fastagent.config.yaml +41 -0
- fast_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +1471 -0
- fast_agent/resources/examples/mcp/elicitations/elicitation_account_server.py +88 -0
- fast_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py +297 -0
- fast_agent/resources/examples/mcp/elicitations/elicitation_game_server.py +164 -0
- fast_agent/resources/examples/mcp/elicitations/fastagent.config.yaml +35 -0
- fast_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +17 -0
- fast_agent/resources/examples/mcp/elicitations/forms_demo.py +107 -0
- fast_agent/resources/examples/mcp/elicitations/game_character.py +65 -0
- fast_agent/resources/examples/mcp/elicitations/game_character_handler.py +256 -0
- fast_agent/resources/examples/mcp/elicitations/tool_call.py +21 -0
- fast_agent/resources/examples/mcp/state-transfer/agent_one.py +18 -0
- fast_agent/resources/examples/mcp/state-transfer/agent_two.py +18 -0
- fast_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +27 -0
- fast_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +15 -0
- fast_agent/resources/examples/researcher/fastagent.config.yaml +61 -0
- fast_agent/resources/examples/researcher/researcher-eval.py +53 -0
- fast_agent/resources/examples/researcher/researcher-imp.py +189 -0
- fast_agent/resources/examples/researcher/researcher.py +36 -0
- fast_agent/resources/examples/tensorzero/.env.sample +2 -0
- fast_agent/resources/examples/tensorzero/Makefile +31 -0
- fast_agent/resources/examples/tensorzero/README.md +56 -0
- fast_agent/resources/examples/tensorzero/agent.py +35 -0
- fast_agent/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
- fast_agent/resources/examples/tensorzero/demo_images/crab.png +0 -0
- fast_agent/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
- fast_agent/resources/examples/tensorzero/docker-compose.yml +105 -0
- fast_agent/resources/examples/tensorzero/fastagent.config.yaml +19 -0
- fast_agent/resources/examples/tensorzero/image_demo.py +67 -0
- fast_agent/resources/examples/tensorzero/mcp_server/Dockerfile +25 -0
- fast_agent/resources/examples/tensorzero/mcp_server/entrypoint.sh +35 -0
- fast_agent/resources/examples/tensorzero/mcp_server/mcp_server.py +31 -0
- fast_agent/resources/examples/tensorzero/mcp_server/pyproject.toml +11 -0
- fast_agent/resources/examples/tensorzero/simple_agent.py +25 -0
- fast_agent/resources/examples/tensorzero/tensorzero_config/system_schema.json +29 -0
- fast_agent/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +11 -0
- fast_agent/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +35 -0
- fast_agent/resources/examples/workflows/agents_as_tools_extended.py +73 -0
- fast_agent/resources/examples/workflows/agents_as_tools_simple.py +50 -0
- fast_agent/resources/examples/workflows/chaining.py +37 -0
- fast_agent/resources/examples/workflows/evaluator.py +77 -0
- fast_agent/resources/examples/workflows/fastagent.config.yaml +26 -0
- fast_agent/resources/examples/workflows/graded_report.md +89 -0
- fast_agent/resources/examples/workflows/human_input.py +28 -0
- fast_agent/resources/examples/workflows/maker.py +156 -0
- fast_agent/resources/examples/workflows/orchestrator.py +70 -0
- fast_agent/resources/examples/workflows/parallel.py +56 -0
- fast_agent/resources/examples/workflows/router.py +69 -0
- fast_agent/resources/examples/workflows/short_story.md +13 -0
- fast_agent/resources/examples/workflows/short_story.txt +19 -0
- fast_agent/resources/setup/.gitignore +30 -0
- fast_agent/resources/setup/agent.py +28 -0
- fast_agent/resources/setup/fastagent.config.yaml +65 -0
- fast_agent/resources/setup/fastagent.secrets.yaml.example +38 -0
- fast_agent/resources/setup/pyproject.toml.tmpl +23 -0
- fast_agent/skills/__init__.py +9 -0
- fast_agent/skills/registry.py +235 -0
- fast_agent/tools/elicitation.py +369 -0
- fast_agent/tools/shell_runtime.py +402 -0
- fast_agent/types/__init__.py +59 -0
- fast_agent/types/conversation_summary.py +294 -0
- fast_agent/types/llm_stop_reason.py +78 -0
- fast_agent/types/message_search.py +249 -0
- fast_agent/ui/__init__.py +38 -0
- fast_agent/ui/console.py +59 -0
- fast_agent/ui/console_display.py +1080 -0
- fast_agent/ui/elicitation_form.py +946 -0
- fast_agent/ui/elicitation_style.py +59 -0
- fast_agent/ui/enhanced_prompt.py +1400 -0
- fast_agent/ui/history_display.py +734 -0
- fast_agent/ui/interactive_prompt.py +1199 -0
- fast_agent/ui/markdown_helpers.py +104 -0
- fast_agent/ui/markdown_truncator.py +1004 -0
- fast_agent/ui/mcp_display.py +857 -0
- fast_agent/ui/mcp_ui_utils.py +235 -0
- fast_agent/ui/mermaid_utils.py +169 -0
- fast_agent/ui/message_primitives.py +50 -0
- fast_agent/ui/notification_tracker.py +205 -0
- fast_agent/ui/plain_text_truncator.py +68 -0
- fast_agent/ui/progress_display.py +10 -0
- fast_agent/ui/rich_progress.py +195 -0
- fast_agent/ui/streaming.py +774 -0
- fast_agent/ui/streaming_buffer.py +449 -0
- fast_agent/ui/tool_display.py +422 -0
- fast_agent/ui/usage_display.py +204 -0
- fast_agent/utils/__init__.py +5 -0
- fast_agent/utils/reasoning_stream_parser.py +77 -0
- fast_agent/utils/time.py +22 -0
- fast_agent/workflow_telemetry.py +261 -0
- fast_agent_mcp-0.4.7.dist-info/METADATA +788 -0
- fast_agent_mcp-0.4.7.dist-info/RECORD +261 -0
- fast_agent_mcp-0.4.7.dist-info/WHEEL +4 -0
- fast_agent_mcp-0.4.7.dist-info/entry_points.txt +7 -0
- fast_agent_mcp-0.4.7.dist-info/licenses/LICENSE +201 -0
fast_agent/cli/main.py
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Main CLI entry point for MCP Agent."""
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
from rich.table import Table
|
|
5
|
+
|
|
6
|
+
from fast_agent.cli.commands import acp, auth, check_config, go, quickstart, serve, setup
|
|
7
|
+
from fast_agent.cli.terminal import Application
|
|
8
|
+
from fast_agent.ui.console import console as shared_console
|
|
9
|
+
|
|
10
|
+
app = typer.Typer(
|
|
11
|
+
help="Use `fast-agent go --help` for interactive shell arguments and options.",
|
|
12
|
+
add_completion=False, # We'll add this later when we have more commands
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
# Subcommands
|
|
16
|
+
app.add_typer(go.app, name="go", help="Run an interactive agent directly from the command line")
|
|
17
|
+
app.add_typer(serve.app, name="serve", help="Run FastAgent as an MCP server")
|
|
18
|
+
app.add_typer(acp.app, name="acp", help="Run FastAgent as an ACP stdio server")
|
|
19
|
+
app.add_typer(setup.app, name="setup", help="Set up a new agent project")
|
|
20
|
+
app.add_typer(check_config.app, name="check", help="Show or diagnose fast-agent configuration")
|
|
21
|
+
app.add_typer(auth.app, name="auth", help="Manage OAuth authentication for MCP servers")
|
|
22
|
+
app.add_typer(quickstart.app, name="bootstrap", help="Create example applications")
|
|
23
|
+
app.add_typer(quickstart.app, name="quickstart", help="Create example applications")
|
|
24
|
+
|
|
25
|
+
# Shared application context
|
|
26
|
+
application = Application()
|
|
27
|
+
# Use shared console to match app-wide styling
|
|
28
|
+
console = shared_console
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def show_welcome() -> None:
|
|
32
|
+
"""Show a welcome message with available commands, using new styling."""
|
|
33
|
+
from importlib.metadata import version
|
|
34
|
+
|
|
35
|
+
from rich.text import Text
|
|
36
|
+
|
|
37
|
+
try:
|
|
38
|
+
app_version = version("fast-agent-mcp")
|
|
39
|
+
except: # noqa: E722
|
|
40
|
+
app_version = "unknown"
|
|
41
|
+
|
|
42
|
+
# Header in the same style used by check/console_display
|
|
43
|
+
def _print_section_header(title: str, color: str = "blue") -> None:
|
|
44
|
+
width = console.size.width
|
|
45
|
+
left = f"[{color}]▎[/{color}][dim {color}]▶[/dim {color}] [{color}]{title}[/{color}]"
|
|
46
|
+
left_text = Text.from_markup(left)
|
|
47
|
+
separator_count = max(1, width - left_text.cell_len - 1)
|
|
48
|
+
|
|
49
|
+
combined = Text()
|
|
50
|
+
combined.append_text(left_text)
|
|
51
|
+
combined.append(" ")
|
|
52
|
+
combined.append("─" * separator_count, style="dim")
|
|
53
|
+
|
|
54
|
+
console.print()
|
|
55
|
+
console.print(combined)
|
|
56
|
+
console.print()
|
|
57
|
+
|
|
58
|
+
header_title = f"fast-agent v{app_version}"
|
|
59
|
+
_print_section_header(header_title, color="blue")
|
|
60
|
+
|
|
61
|
+
# Commands list (no boxes), matching updated check styling
|
|
62
|
+
table = Table(show_header=True, box=None)
|
|
63
|
+
table.add_column("Command", style="green", header_style="bold bright_white")
|
|
64
|
+
table.add_column("Description", header_style="bold bright_white")
|
|
65
|
+
|
|
66
|
+
table.add_row("[bold]go[/bold]", "Start an interactive session")
|
|
67
|
+
table.add_row("go -x", "Start an interactive session with a local shell tool")
|
|
68
|
+
table.add_row("[bold]serve[/bold]", "Start fast-agent as an MCP server")
|
|
69
|
+
table.add_row("check", "Show current configuration")
|
|
70
|
+
table.add_row("auth", "Manage OAuth tokens and keyring")
|
|
71
|
+
table.add_row("setup", "Create agent template and configuration")
|
|
72
|
+
table.add_row("quickstart", "Create example applications (workflow, researcher, etc.)")
|
|
73
|
+
|
|
74
|
+
console.print(table)
|
|
75
|
+
|
|
76
|
+
console.print(
|
|
77
|
+
"\nVisit [cyan][link=https://fast-agent.ai]fast-agent.ai[/link][/cyan] for more information."
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@app.callback(invoke_without_command=True)
|
|
82
|
+
def main(
|
|
83
|
+
ctx: typer.Context,
|
|
84
|
+
verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable verbose mode"),
|
|
85
|
+
quiet: bool = typer.Option(False, "--quiet", "-q", help="Disable output"),
|
|
86
|
+
color: bool = typer.Option(True, "--color/--no-color", help="Enable/disable color output"),
|
|
87
|
+
version: bool = typer.Option(False, "--version", help="Show version and exit"),
|
|
88
|
+
) -> None:
|
|
89
|
+
"""fast-agent - Build effective agents using Model Context Protocol (MCP).
|
|
90
|
+
|
|
91
|
+
Use --help with any command for detailed usage information.
|
|
92
|
+
"""
|
|
93
|
+
application.verbosity = 1 if verbose else 0 if not quiet else -1
|
|
94
|
+
if not color:
|
|
95
|
+
# Recreate consoles without color when --no-color is provided
|
|
96
|
+
from fast_agent.ui.console import console as base_console
|
|
97
|
+
from fast_agent.ui.console import error_console as base_error_console
|
|
98
|
+
|
|
99
|
+
application.console = base_console.__class__(color_system=None)
|
|
100
|
+
application.error_console = base_error_console.__class__(color_system=None, stderr=True)
|
|
101
|
+
|
|
102
|
+
# Handle version flag
|
|
103
|
+
if version:
|
|
104
|
+
from importlib.metadata import version as get_version
|
|
105
|
+
|
|
106
|
+
try:
|
|
107
|
+
app_version = get_version("fast-agent-mcp")
|
|
108
|
+
except: # noqa: E722
|
|
109
|
+
app_version = "unknown"
|
|
110
|
+
console.print(f"fast-agent-mcp v{app_version}")
|
|
111
|
+
raise typer.Exit()
|
|
112
|
+
|
|
113
|
+
# Show welcome message if no command was invoked
|
|
114
|
+
if ctx.invoked_subcommand is None:
|
|
115
|
+
show_welcome()
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from fast_agent.ui.console import console, error_console
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Application:
|
|
5
|
+
def __init__(self, verbosity: int = 0, enable_color: bool = True) -> None:
|
|
6
|
+
self.verbosity = verbosity
|
|
7
|
+
# Use the central console instances, respecting color setting
|
|
8
|
+
if not enable_color:
|
|
9
|
+
# Create new instances without color if color is disabled
|
|
10
|
+
self.console = console.__class__(color_system=None)
|
|
11
|
+
self.error_console = error_console.__class__(color_system=None, stderr=True)
|
|
12
|
+
else:
|
|
13
|
+
self.console = console
|
|
14
|
+
self.error_console = error_console
|
|
15
|
+
|
|
16
|
+
def log(self, message: str, level: str = "info") -> None:
|
|
17
|
+
if level == "info" or (level == "debug" and self.verbosity > 0) or level == "error":
|
|
18
|
+
if level == "error":
|
|
19
|
+
self.error_console.print(f"[{level.upper()}] {message}")
|
|
20
|
+
else:
|
|
21
|
+
self.console.print(f"[{level.upper()}] {message}")
|
|
22
|
+
|
|
23
|
+
def status(self, message: str):
|
|
24
|
+
return self.console.status(f"[bold cyan]{message}[/bold cyan]")
|