fast-agent-mcp 0.2.57__py3-none-any.whl → 0.3.0__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.
Potentially problematic release.
This version of fast-agent-mcp might be problematic. Click here for more details.
- fast_agent/__init__.py +127 -0
- fast_agent/agents/__init__.py +36 -0
- {mcp_agent/core → fast_agent/agents}/agent_types.py +2 -1
- fast_agent/agents/llm_agent.py +217 -0
- fast_agent/agents/llm_decorator.py +486 -0
- mcp_agent/agents/base_agent.py → fast_agent/agents/mcp_agent.py +377 -385
- fast_agent/agents/tool_agent.py +168 -0
- {mcp_agent → fast_agent}/agents/workflow/chain_agent.py +43 -33
- {mcp_agent → fast_agent}/agents/workflow/evaluator_optimizer.py +31 -35
- {mcp_agent → fast_agent}/agents/workflow/iterative_planner.py +56 -47
- {mcp_agent → fast_agent}/agents/workflow/orchestrator_models.py +4 -4
- {mcp_agent → fast_agent}/agents/workflow/parallel_agent.py +34 -41
- {mcp_agent → fast_agent}/agents/workflow/router_agent.py +54 -39
- {mcp_agent → fast_agent}/cli/__main__.py +5 -3
- {mcp_agent → fast_agent}/cli/commands/check_config.py +95 -66
- {mcp_agent → fast_agent}/cli/commands/go.py +20 -11
- {mcp_agent → fast_agent}/cli/commands/quickstart.py +4 -4
- {mcp_agent → fast_agent}/cli/commands/server_helpers.py +1 -1
- {mcp_agent → fast_agent}/cli/commands/setup.py +64 -134
- {mcp_agent → fast_agent}/cli/commands/url_parser.py +9 -8
- {mcp_agent → fast_agent}/cli/main.py +36 -16
- {mcp_agent → fast_agent}/cli/terminal.py +2 -2
- {mcp_agent → fast_agent}/config.py +13 -2
- fast_agent/constants.py +8 -0
- {mcp_agent → fast_agent}/context.py +24 -19
- {mcp_agent → fast_agent}/context_dependent.py +9 -5
- fast_agent/core/__init__.py +17 -0
- {mcp_agent → fast_agent}/core/agent_app.py +39 -36
- fast_agent/core/core_app.py +135 -0
- {mcp_agent → fast_agent}/core/direct_decorators.py +12 -26
- {mcp_agent → fast_agent}/core/direct_factory.py +95 -73
- {mcp_agent → fast_agent/core}/executor/executor.py +4 -5
- {mcp_agent → fast_agent}/core/fastagent.py +32 -32
- fast_agent/core/logging/__init__.py +5 -0
- {mcp_agent → fast_agent/core}/logging/events.py +3 -3
- {mcp_agent → fast_agent/core}/logging/json_serializer.py +1 -1
- {mcp_agent → fast_agent/core}/logging/listeners.py +85 -7
- {mcp_agent → fast_agent/core}/logging/logger.py +7 -7
- {mcp_agent → fast_agent/core}/logging/transport.py +10 -11
- fast_agent/core/prompt.py +9 -0
- {mcp_agent → fast_agent}/core/validation.py +4 -4
- fast_agent/event_progress.py +61 -0
- fast_agent/history/history_exporter.py +44 -0
- {mcp_agent → fast_agent}/human_input/__init__.py +9 -12
- {mcp_agent → fast_agent}/human_input/elicitation_handler.py +26 -8
- {mcp_agent → fast_agent}/human_input/elicitation_state.py +7 -7
- {mcp_agent → fast_agent}/human_input/simple_form.py +6 -4
- {mcp_agent → fast_agent}/human_input/types.py +1 -18
- fast_agent/interfaces.py +228 -0
- fast_agent/llm/__init__.py +9 -0
- mcp_agent/llm/augmented_llm.py → fast_agent/llm/fastagent_llm.py +128 -218
- fast_agent/llm/internal/passthrough.py +137 -0
- mcp_agent/llm/augmented_llm_playback.py → fast_agent/llm/internal/playback.py +29 -25
- mcp_agent/llm/augmented_llm_silent.py → fast_agent/llm/internal/silent.py +10 -17
- fast_agent/llm/internal/slow.py +38 -0
- {mcp_agent → fast_agent}/llm/memory.py +40 -30
- {mcp_agent → fast_agent}/llm/model_database.py +35 -2
- {mcp_agent → fast_agent}/llm/model_factory.py +103 -77
- fast_agent/llm/model_info.py +126 -0
- {mcp_agent/llm/providers → fast_agent/llm/provider/anthropic}/anthropic_utils.py +7 -7
- fast_agent/llm/provider/anthropic/llm_anthropic.py +603 -0
- {mcp_agent/llm/providers → fast_agent/llm/provider/anthropic}/multipart_converter_anthropic.py +79 -86
- fast_agent/llm/provider/bedrock/bedrock_utils.py +218 -0
- fast_agent/llm/provider/bedrock/llm_bedrock.py +2192 -0
- {mcp_agent/llm/providers → fast_agent/llm/provider/google}/google_converter.py +66 -14
- fast_agent/llm/provider/google/llm_google_native.py +431 -0
- mcp_agent/llm/providers/augmented_llm_aliyun.py → fast_agent/llm/provider/openai/llm_aliyun.py +6 -7
- mcp_agent/llm/providers/augmented_llm_azure.py → fast_agent/llm/provider/openai/llm_azure.py +4 -4
- mcp_agent/llm/providers/augmented_llm_deepseek.py → fast_agent/llm/provider/openai/llm_deepseek.py +10 -11
- mcp_agent/llm/providers/augmented_llm_generic.py → fast_agent/llm/provider/openai/llm_generic.py +4 -4
- mcp_agent/llm/providers/augmented_llm_google_oai.py → fast_agent/llm/provider/openai/llm_google_oai.py +4 -4
- mcp_agent/llm/providers/augmented_llm_groq.py → fast_agent/llm/provider/openai/llm_groq.py +14 -16
- mcp_agent/llm/providers/augmented_llm_openai.py → fast_agent/llm/provider/openai/llm_openai.py +133 -206
- mcp_agent/llm/providers/augmented_llm_openrouter.py → fast_agent/llm/provider/openai/llm_openrouter.py +6 -6
- mcp_agent/llm/providers/augmented_llm_tensorzero_openai.py → fast_agent/llm/provider/openai/llm_tensorzero_openai.py +17 -16
- mcp_agent/llm/providers/augmented_llm_xai.py → fast_agent/llm/provider/openai/llm_xai.py +6 -6
- {mcp_agent/llm/providers → fast_agent/llm/provider/openai}/multipart_converter_openai.py +125 -63
- {mcp_agent/llm/providers → fast_agent/llm/provider/openai}/openai_multipart.py +12 -12
- {mcp_agent/llm/providers → fast_agent/llm/provider/openai}/openai_utils.py +18 -16
- {mcp_agent → fast_agent}/llm/provider_key_manager.py +2 -2
- {mcp_agent → fast_agent}/llm/provider_types.py +2 -0
- {mcp_agent → fast_agent}/llm/sampling_converter.py +15 -12
- {mcp_agent → fast_agent}/llm/usage_tracking.py +23 -5
- fast_agent/mcp/__init__.py +43 -0
- {mcp_agent → fast_agent}/mcp/elicitation_factory.py +3 -3
- {mcp_agent → fast_agent}/mcp/elicitation_handlers.py +19 -10
- {mcp_agent → fast_agent}/mcp/gen_client.py +3 -3
- fast_agent/mcp/helpers/__init__.py +36 -0
- fast_agent/mcp/helpers/content_helpers.py +183 -0
- {mcp_agent → fast_agent}/mcp/helpers/server_config_helpers.py +8 -8
- {mcp_agent → fast_agent}/mcp/hf_auth.py +25 -23
- fast_agent/mcp/interfaces.py +93 -0
- {mcp_agent → fast_agent}/mcp/logger_textio.py +4 -4
- {mcp_agent → fast_agent}/mcp/mcp_agent_client_session.py +49 -44
- {mcp_agent → fast_agent}/mcp/mcp_aggregator.py +66 -115
- {mcp_agent → fast_agent}/mcp/mcp_connection_manager.py +16 -23
- {mcp_agent/core → fast_agent/mcp}/mcp_content.py +23 -15
- {mcp_agent → fast_agent}/mcp/mime_utils.py +39 -0
- fast_agent/mcp/prompt.py +159 -0
- mcp_agent/mcp/prompt_message_multipart.py → fast_agent/mcp/prompt_message_extended.py +27 -20
- {mcp_agent → fast_agent}/mcp/prompt_render.py +21 -19
- {mcp_agent → fast_agent}/mcp/prompt_serialization.py +46 -46
- fast_agent/mcp/prompts/__main__.py +7 -0
- {mcp_agent → fast_agent}/mcp/prompts/prompt_helpers.py +31 -30
- {mcp_agent → fast_agent}/mcp/prompts/prompt_load.py +8 -8
- {mcp_agent → fast_agent}/mcp/prompts/prompt_server.py +11 -19
- {mcp_agent → fast_agent}/mcp/prompts/prompt_template.py +18 -18
- {mcp_agent → fast_agent}/mcp/resource_utils.py +1 -1
- {mcp_agent → fast_agent}/mcp/sampling.py +31 -26
- {mcp_agent/mcp_server → fast_agent/mcp/server}/__init__.py +1 -1
- {mcp_agent/mcp_server → fast_agent/mcp/server}/agent_server.py +5 -6
- fast_agent/mcp/ui_agent.py +48 -0
- fast_agent/mcp/ui_mixin.py +209 -0
- fast_agent/mcp_server_registry.py +90 -0
- {mcp_agent → fast_agent}/resources/examples/data-analysis/analysis-campaign.py +5 -4
- {mcp_agent → fast_agent}/resources/examples/data-analysis/analysis.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/elicitation_forms_server.py +25 -3
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/forms_demo.py +3 -3
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/game_character.py +2 -2
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/game_character_handler.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/tool_call.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/mcp/state-transfer/agent_one.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/mcp/state-transfer/agent_two.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/researcher/researcher-eval.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/researcher/researcher-imp.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/researcher/researcher.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/tensorzero/agent.py +2 -2
- {mcp_agent → fast_agent}/resources/examples/tensorzero/image_demo.py +3 -3
- {mcp_agent → fast_agent}/resources/examples/tensorzero/simple_agent.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/workflows/chaining.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/workflows/evaluator.py +3 -3
- {mcp_agent → fast_agent}/resources/examples/workflows/human_input.py +5 -3
- {mcp_agent → fast_agent}/resources/examples/workflows/orchestrator.py +1 -1
- {mcp_agent → fast_agent}/resources/examples/workflows/parallel.py +2 -2
- {mcp_agent → fast_agent}/resources/examples/workflows/router.py +5 -2
- fast_agent/resources/setup/.gitignore +24 -0
- fast_agent/resources/setup/agent.py +18 -0
- fast_agent/resources/setup/fastagent.config.yaml +44 -0
- fast_agent/resources/setup/fastagent.secrets.yaml.example +38 -0
- fast_agent/tools/elicitation.py +369 -0
- fast_agent/types/__init__.py +32 -0
- fast_agent/types/llm_stop_reason.py +77 -0
- fast_agent/ui/__init__.py +38 -0
- fast_agent/ui/console_display.py +1005 -0
- {mcp_agent/human_input → fast_agent/ui}/elicitation_form.py +56 -39
- mcp_agent/human_input/elicitation_forms.py → fast_agent/ui/elicitation_style.py +1 -1
- {mcp_agent/core → fast_agent/ui}/enhanced_prompt.py +96 -25
- {mcp_agent/core → fast_agent/ui}/interactive_prompt.py +330 -125
- fast_agent/ui/mcp_ui_utils.py +224 -0
- {mcp_agent → fast_agent/ui}/progress_display.py +2 -2
- {mcp_agent/logging → fast_agent/ui}/rich_progress.py +4 -4
- {mcp_agent/core → fast_agent/ui}/usage_display.py +3 -8
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.3.0.dist-info}/METADATA +7 -7
- fast_agent_mcp-0.3.0.dist-info/RECORD +202 -0
- fast_agent_mcp-0.3.0.dist-info/entry_points.txt +5 -0
- fast_agent_mcp-0.2.57.dist-info/RECORD +0 -192
- fast_agent_mcp-0.2.57.dist-info/entry_points.txt +0 -6
- mcp_agent/__init__.py +0 -114
- mcp_agent/agents/agent.py +0 -92
- mcp_agent/agents/workflow/__init__.py +0 -1
- mcp_agent/agents/workflow/orchestrator_agent.py +0 -597
- mcp_agent/app.py +0 -175
- mcp_agent/core/__init__.py +0 -26
- mcp_agent/core/prompt.py +0 -191
- mcp_agent/event_progress.py +0 -134
- mcp_agent/human_input/handler.py +0 -81
- mcp_agent/llm/__init__.py +0 -2
- mcp_agent/llm/augmented_llm_passthrough.py +0 -232
- mcp_agent/llm/augmented_llm_slow.py +0 -53
- mcp_agent/llm/providers/__init__.py +0 -8
- mcp_agent/llm/providers/augmented_llm_anthropic.py +0 -717
- mcp_agent/llm/providers/augmented_llm_bedrock.py +0 -1788
- mcp_agent/llm/providers/augmented_llm_google_native.py +0 -495
- mcp_agent/llm/providers/sampling_converter_anthropic.py +0 -57
- mcp_agent/llm/providers/sampling_converter_openai.py +0 -26
- mcp_agent/llm/sampling_format_converter.py +0 -37
- mcp_agent/logging/__init__.py +0 -0
- mcp_agent/mcp/__init__.py +0 -50
- mcp_agent/mcp/helpers/__init__.py +0 -25
- mcp_agent/mcp/helpers/content_helpers.py +0 -187
- mcp_agent/mcp/interfaces.py +0 -266
- mcp_agent/mcp/prompts/__init__.py +0 -0
- mcp_agent/mcp/prompts/__main__.py +0 -10
- mcp_agent/mcp_server_registry.py +0 -343
- mcp_agent/tools/tool_definition.py +0 -14
- mcp_agent/ui/console_display.py +0 -790
- mcp_agent/ui/console_display_legacy.py +0 -401
- {mcp_agent → fast_agent}/agents/workflow/orchestrator_prompts.py +0 -0
- {mcp_agent/agents → fast_agent/cli}/__init__.py +0 -0
- {mcp_agent → fast_agent}/cli/constants.py +0 -0
- {mcp_agent → fast_agent}/core/error_handling.py +0 -0
- {mcp_agent → fast_agent}/core/exceptions.py +0 -0
- {mcp_agent/cli → fast_agent/core/executor}/__init__.py +0 -0
- {mcp_agent → fast_agent/core}/executor/task_registry.py +0 -0
- {mcp_agent → fast_agent/core}/executor/workflow_signal.py +0 -0
- {mcp_agent → fast_agent}/human_input/form_fields.py +0 -0
- {mcp_agent → fast_agent}/llm/prompt_utils.py +0 -0
- {mcp_agent/core → fast_agent/llm}/request_params.py +0 -0
- {mcp_agent → fast_agent}/mcp/common.py +0 -0
- {mcp_agent/executor → fast_agent/mcp/prompts}/__init__.py +0 -0
- {mcp_agent → fast_agent}/mcp/prompts/prompt_constants.py +0 -0
- {mcp_agent → fast_agent}/py.typed +0 -0
- {mcp_agent → fast_agent}/resources/examples/data-analysis/fastagent.config.yaml +0 -0
- {mcp_agent → fast_agent}/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/elicitation_account_server.py +0 -0
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/elicitation_game_server.py +0 -0
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/fastagent.config.yaml +0 -0
- {mcp_agent → fast_agent}/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
- {mcp_agent → fast_agent}/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
- {mcp_agent → fast_agent}/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
- {mcp_agent → fast_agent}/resources/examples/researcher/fastagent.config.yaml +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/.env.sample +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/Makefile +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/README.md +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/demo_images/crab.png +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/docker-compose.yml +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/fastagent.config.yaml +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/mcp_server/Dockerfile +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/mcp_server/mcp_server.py +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/mcp_server/pyproject.toml +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
- {mcp_agent → fast_agent}/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
- {mcp_agent → fast_agent}/resources/examples/workflows/fastagent.config.yaml +0 -0
- {mcp_agent → fast_agent}/resources/examples/workflows/graded_report.md +0 -0
- {mcp_agent → fast_agent}/resources/examples/workflows/short_story.md +0 -0
- {mcp_agent → fast_agent}/resources/examples/workflows/short_story.txt +0 -0
- {mcp_agent → fast_agent/ui}/console.py +0 -0
- {mcp_agent/core → fast_agent/ui}/mermaid_utils.py +0 -0
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.3.0.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.2.57.dist-info → fast_agent_mcp-0.3.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import base64
|
|
4
|
+
import platform
|
|
5
|
+
import re
|
|
6
|
+
import subprocess
|
|
7
|
+
import webbrowser
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Iterable, List, Optional
|
|
11
|
+
|
|
12
|
+
from mcp.types import BlobResourceContents, EmbeddedResource, TextResourceContents
|
|
13
|
+
|
|
14
|
+
"""
|
|
15
|
+
Utilities for handling MCP-UI resources carried in PromptMessageExtended.channels.
|
|
16
|
+
|
|
17
|
+
Responsibilities:
|
|
18
|
+
- Identify MCP-UI EmbeddedResources from channels
|
|
19
|
+
- Decode text/blob content depending on mimeType
|
|
20
|
+
- Produce local HTML files that safely embed the UI content (srcdoc or iframe)
|
|
21
|
+
- Return presentable link labels for console display
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# Control whether to generate data URLs for embedded HTML content
|
|
25
|
+
# When disabled, always use file:// URLs which work better with most terminals
|
|
26
|
+
ENABLE_DATA_URLS = False
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@dataclass
|
|
30
|
+
class UILink:
|
|
31
|
+
title: str
|
|
32
|
+
file_path: str # absolute path to local html file
|
|
33
|
+
web_url: Optional[str] = None # Preferable clickable link (http(s) or data URL)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _safe_filename(name: str) -> str:
|
|
37
|
+
name = re.sub(r"[^A-Za-z0-9_.-]", "_", name)
|
|
38
|
+
return name[:120] if len(name) > 120 else name
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _ensure_output_dir() -> Path:
|
|
42
|
+
base = Path.cwd() / ".fastagent" / "ui"
|
|
43
|
+
base.mkdir(parents=True, exist_ok=True)
|
|
44
|
+
return base
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _extract_title(uri: str | None) -> str:
|
|
48
|
+
if not uri:
|
|
49
|
+
return "UI"
|
|
50
|
+
try:
|
|
51
|
+
# ui://component/instance -> component:instance
|
|
52
|
+
without_scheme = uri.split("ui://", 1)[1] if uri.startswith("ui://") else uri
|
|
53
|
+
parts = [p for p in re.split(r"[/:]", without_scheme) if p]
|
|
54
|
+
if len(parts) >= 2:
|
|
55
|
+
return f"{parts[0]}:{parts[1]}"
|
|
56
|
+
return parts[0] if parts else "UI"
|
|
57
|
+
except Exception:
|
|
58
|
+
return "UI"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _decode_text_or_blob(resource) -> Optional[str]:
|
|
62
|
+
"""Return string content from TextResourceContents or BlobResourceContents."""
|
|
63
|
+
if isinstance(resource, TextResourceContents):
|
|
64
|
+
return resource.text or ""
|
|
65
|
+
if isinstance(resource, BlobResourceContents):
|
|
66
|
+
try:
|
|
67
|
+
return base64.b64decode(resource.blob or "").decode("utf-8", errors="replace")
|
|
68
|
+
except Exception:
|
|
69
|
+
return None
|
|
70
|
+
return None
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _first_https_url_from_uri_list(text: str) -> Optional[str]:
|
|
74
|
+
for line in text.splitlines():
|
|
75
|
+
line = line.strip()
|
|
76
|
+
if not line or line.startswith("#"):
|
|
77
|
+
continue
|
|
78
|
+
if line.startswith("http://") or line.startswith("https://"):
|
|
79
|
+
return line
|
|
80
|
+
return None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _make_html_for_raw_html(html_string: str) -> str:
|
|
84
|
+
# Wrap with minimal HTML and sandbox guidance (iframe srcdoc will be used by browsers)
|
|
85
|
+
return html_string
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _make_html_for_uri(url: str) -> str:
|
|
89
|
+
return f"""
|
|
90
|
+
<!doctype html>
|
|
91
|
+
<html>
|
|
92
|
+
<head>
|
|
93
|
+
<meta charset=\"utf-8\" />
|
|
94
|
+
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />
|
|
95
|
+
<title>MCP-UI</title>
|
|
96
|
+
<style>html,body,iframe{{margin:0;padding:0;height:100%;width:100%;border:0}}</style>
|
|
97
|
+
</head>
|
|
98
|
+
<body>
|
|
99
|
+
<iframe src=\"{url}\" sandbox=\"allow-scripts allow-forms allow-same-origin\" referrerpolicy=\"no-referrer\"></iframe>
|
|
100
|
+
</body>
|
|
101
|
+
</html>
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _write_html_file(name_hint: str, html: str) -> str:
|
|
106
|
+
out_dir = _ensure_output_dir()
|
|
107
|
+
file_name = _safe_filename(name_hint or "ui") + ".html"
|
|
108
|
+
out_path = out_dir / file_name
|
|
109
|
+
# Ensure unique filename if exists
|
|
110
|
+
i = 1
|
|
111
|
+
while out_path.exists():
|
|
112
|
+
out_path = out_dir / f"{_safe_filename(name_hint)}_{i}.html"
|
|
113
|
+
i += 1
|
|
114
|
+
out_path.write_text(html, encoding="utf-8")
|
|
115
|
+
return str(out_path.resolve())
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def ui_links_from_channel(resources: Iterable[EmbeddedResource]) -> List[UILink]:
|
|
119
|
+
"""
|
|
120
|
+
Build local HTML files for a list of MCP-UI EmbeddedResources and return clickable links.
|
|
121
|
+
|
|
122
|
+
Supported mime types:
|
|
123
|
+
- text/html: expects text or base64 blob of HTML
|
|
124
|
+
- text/uri-list: expects text or blob of a single URL (first valid URL is used)
|
|
125
|
+
- application/vnd.mcp-ui.remote-dom* : currently unsupported; generate a placeholder page
|
|
126
|
+
"""
|
|
127
|
+
links: List[UILink] = []
|
|
128
|
+
for emb in resources:
|
|
129
|
+
res = emb.resource
|
|
130
|
+
uri = str(getattr(res, "uri", "")) if getattr(res, "uri", None) else None
|
|
131
|
+
mime = getattr(res, "mimeType", "") or ""
|
|
132
|
+
title = _extract_title(uri)
|
|
133
|
+
content = _decode_text_or_blob(res)
|
|
134
|
+
|
|
135
|
+
if mime.startswith("text/html"):
|
|
136
|
+
if content is None:
|
|
137
|
+
continue
|
|
138
|
+
html = _make_html_for_raw_html(content)
|
|
139
|
+
file_path = _write_html_file(title, html)
|
|
140
|
+
# Generate data URL only if enabled
|
|
141
|
+
if ENABLE_DATA_URLS:
|
|
142
|
+
try:
|
|
143
|
+
b64 = base64.b64encode(html.encode("utf-8")).decode("ascii")
|
|
144
|
+
data_url = f"data:text/html;base64,{b64}"
|
|
145
|
+
# Some terminals have limits; only attach when reasonably small
|
|
146
|
+
web_url = data_url if len(data_url) < 12000 else None
|
|
147
|
+
except Exception:
|
|
148
|
+
web_url = None
|
|
149
|
+
else:
|
|
150
|
+
web_url = None
|
|
151
|
+
links.append(UILink(title=title, file_path=file_path, web_url=web_url))
|
|
152
|
+
|
|
153
|
+
elif mime.startswith("text/uri-list"):
|
|
154
|
+
if content is None:
|
|
155
|
+
continue
|
|
156
|
+
url = _first_https_url_from_uri_list(content)
|
|
157
|
+
if not url:
|
|
158
|
+
# fallback: try to treat entire content as a URL
|
|
159
|
+
url = content.strip()
|
|
160
|
+
if not (url and (url.startswith("http://") or url.startswith("https://"))):
|
|
161
|
+
continue
|
|
162
|
+
html = _make_html_for_uri(url)
|
|
163
|
+
file_path = _write_html_file(title, html)
|
|
164
|
+
# Prefer the direct URL for clickability; keep file for archival
|
|
165
|
+
links.append(UILink(title=title, file_path=file_path, web_url=url))
|
|
166
|
+
|
|
167
|
+
elif mime.startswith("application/vnd.mcp-ui.remote-dom"):
|
|
168
|
+
# Not supported yet - generate informational page
|
|
169
|
+
placeholder = f"""
|
|
170
|
+
<!doctype html>
|
|
171
|
+
<html><head><meta charset=\"utf-8\" /><title>{title} (Unsupported)</title></head>
|
|
172
|
+
<body>
|
|
173
|
+
<p>Remote DOM resources are not supported yet in this client.</p>
|
|
174
|
+
<p>URI: {uri or ""}</p>
|
|
175
|
+
<p>mimeType: {mime}</p>
|
|
176
|
+
<pre style=\"white-space: pre-wrap;\">{(content or "")[:4000]}</pre>
|
|
177
|
+
<p>Please upgrade fast-agent when support becomes available.</p>
|
|
178
|
+
</body></html>
|
|
179
|
+
"""
|
|
180
|
+
file_path = _write_html_file(title + "_unsupported", placeholder)
|
|
181
|
+
links.append(UILink(title=title + " (unsupported)", file_path=file_path))
|
|
182
|
+
else:
|
|
183
|
+
# Unknown, skip quietly
|
|
184
|
+
continue
|
|
185
|
+
|
|
186
|
+
return links
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def open_links_in_browser(links: Iterable[UILink], mcp_ui_mode: str = "auto") -> None:
|
|
190
|
+
"""Open links in browser/system viewer.
|
|
191
|
+
|
|
192
|
+
Args:
|
|
193
|
+
links: Links to open
|
|
194
|
+
mcp_ui_mode: UI mode setting ("disabled", "enabled", "auto")
|
|
195
|
+
"""
|
|
196
|
+
# Only attempt to open files when in auto mode
|
|
197
|
+
if mcp_ui_mode != "auto":
|
|
198
|
+
return
|
|
199
|
+
|
|
200
|
+
for link in links:
|
|
201
|
+
try:
|
|
202
|
+
# Use subprocess for better file:// handling across platforms
|
|
203
|
+
file_path = link.file_path
|
|
204
|
+
|
|
205
|
+
system = platform.system()
|
|
206
|
+
if system == "Darwin": # macOS
|
|
207
|
+
subprocess.run(["open", file_path], check=False, capture_output=True)
|
|
208
|
+
elif system == "Windows":
|
|
209
|
+
subprocess.run(
|
|
210
|
+
["start", "", file_path], shell=True, check=False, capture_output=True
|
|
211
|
+
)
|
|
212
|
+
elif system == "Linux":
|
|
213
|
+
# Try xdg-open first (most common), fallback to other options
|
|
214
|
+
try:
|
|
215
|
+
subprocess.run(["xdg-open", file_path], check=False, capture_output=True)
|
|
216
|
+
except FileNotFoundError:
|
|
217
|
+
# Fallback to webbrowser for Linux if xdg-open not available
|
|
218
|
+
webbrowser.open(f"file://{file_path}", new=2)
|
|
219
|
+
else:
|
|
220
|
+
# Unknown system, fallback to webbrowser
|
|
221
|
+
webbrowser.open(f"file://{file_path}", new=2)
|
|
222
|
+
except Exception:
|
|
223
|
+
# Silently ignore errors - user can still manually open the file
|
|
224
|
+
pass
|
|
@@ -3,8 +3,8 @@ Centralized progress display configuration for MCP Agent.
|
|
|
3
3
|
Provides a shared progress display instance for consistent progress handling.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
from
|
|
6
|
+
from fast_agent.ui.console import console
|
|
7
|
+
from fast_agent.ui.rich_progress import RichProgressDisplay
|
|
8
8
|
|
|
9
9
|
# Main progress display instance - shared across the application
|
|
10
10
|
progress_display = RichProgressDisplay(console)
|
|
@@ -7,8 +7,8 @@ from typing import Optional
|
|
|
7
7
|
from rich.console import Console
|
|
8
8
|
from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
9
9
|
|
|
10
|
-
from
|
|
11
|
-
from
|
|
10
|
+
from fast_agent.event_progress import ProgressAction, ProgressEvent
|
|
11
|
+
from fast_agent.ui.console import console as default_console
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class RichProgressDisplay:
|
|
@@ -140,7 +140,7 @@ class RichProgressDisplay:
|
|
|
140
140
|
"details": event.details or "",
|
|
141
141
|
"task_name": task_name,
|
|
142
142
|
}
|
|
143
|
-
|
|
143
|
+
|
|
144
144
|
# For TOOL_PROGRESS events, update progress if available
|
|
145
145
|
if event.action == ProgressAction.TOOL_PROGRESS and event.progress is not None:
|
|
146
146
|
if event.total is not None:
|
|
@@ -149,7 +149,7 @@ class RichProgressDisplay:
|
|
|
149
149
|
else:
|
|
150
150
|
# If no total, just show as indeterminate progress
|
|
151
151
|
self._progress.reset(task_id)
|
|
152
|
-
|
|
152
|
+
|
|
153
153
|
self._progress.update(task_id, **update_kwargs)
|
|
154
154
|
|
|
155
155
|
if (
|
|
@@ -22,7 +22,7 @@ def display_usage_report(
|
|
|
22
22
|
# Check if progress display is enabled (only relevant for fastagent context)
|
|
23
23
|
if not show_if_progress_disabled:
|
|
24
24
|
try:
|
|
25
|
-
from
|
|
25
|
+
from fast_agent import config
|
|
26
26
|
|
|
27
27
|
settings = config.get_settings()
|
|
28
28
|
if not settings.logger.progress_display:
|
|
@@ -51,16 +51,11 @@ def display_usage_report(
|
|
|
51
51
|
# Get context percentage for this agent
|
|
52
52
|
context_percentage = agent.usage_accumulator.context_usage_percentage
|
|
53
53
|
|
|
54
|
-
# Get model name
|
|
54
|
+
# Get model name via typed property when available
|
|
55
55
|
model = "unknown"
|
|
56
56
|
if hasattr(agent, "_llm") and agent._llm:
|
|
57
57
|
llm = agent._llm
|
|
58
|
-
|
|
59
|
-
hasattr(llm, "default_request_params")
|
|
60
|
-
and llm.default_request_params
|
|
61
|
-
and hasattr(llm.default_request_params, "model")
|
|
62
|
-
):
|
|
63
|
-
model = llm.default_request_params.model or "unknown"
|
|
58
|
+
model = getattr(llm, "model_name", None) or "unknown"
|
|
64
59
|
|
|
65
60
|
# Standardize model name truncation - use consistent 25 char width with 22+... truncation
|
|
66
61
|
if len(model) > 25:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fast-agent-mcp
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Define, Prompt and Test MCP enabled Agents and Workflows
|
|
5
5
|
Author-email: Shaun Smith <fastagent@llmindset.co.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -208,18 +208,18 @@ License-File: LICENSE
|
|
|
208
208
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
209
209
|
Classifier: Operating System :: OS Independent
|
|
210
210
|
Classifier: Programming Language :: Python :: 3
|
|
211
|
-
Requires-Python: >=3.13
|
|
211
|
+
Requires-Python: >=3.13.7
|
|
212
212
|
Requires-Dist: a2a-sdk>=0.3.0
|
|
213
213
|
Requires-Dist: aiohttp>=3.11.13
|
|
214
|
-
Requires-Dist: anthropic>=0.
|
|
214
|
+
Requires-Dist: anthropic>=0.66.0
|
|
215
215
|
Requires-Dist: azure-identity>=1.14.0
|
|
216
216
|
Requires-Dist: boto3>=1.35.0
|
|
217
217
|
Requires-Dist: deprecated>=1.2.18
|
|
218
218
|
Requires-Dist: email-validator>=2.2.0
|
|
219
219
|
Requires-Dist: fastapi>=0.115.6
|
|
220
|
-
Requires-Dist: google-genai>=1.
|
|
221
|
-
Requires-Dist: mcp==1.
|
|
222
|
-
Requires-Dist: openai>=1.
|
|
220
|
+
Requires-Dist: google-genai>=1.33.0
|
|
221
|
+
Requires-Dist: mcp==1.14.0
|
|
222
|
+
Requires-Dist: openai>=1.106.1
|
|
223
223
|
Requires-Dist: opentelemetry-distro>=0.55b0
|
|
224
224
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
|
|
225
225
|
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.43.1; python_version >= '3.10' and python_version < '4.0'
|
|
@@ -321,7 +321,7 @@ Here is the complete `sizer.py` Agent application, with boilerplate code:
|
|
|
321
321
|
|
|
322
322
|
```python
|
|
323
323
|
import asyncio
|
|
324
|
-
from
|
|
324
|
+
from fast_agent.core.fastagent import FastAgent
|
|
325
325
|
|
|
326
326
|
# Create the application
|
|
327
327
|
fast = FastAgent("Agent Example")
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
fast_agent/__init__.py,sha256=bmws6wJQefvfO0Cd5x9VLTI7RCdjF6NqZtWSj_14tv0,3349
|
|
2
|
+
fast_agent/config.py,sha256=8CPbTctXGdSneAkMory5ZRXkUsUj4AyKnaf_nmEamQA,19886
|
|
3
|
+
fast_agent/constants.py,sha256=d5EMSO2msRkjRFz8MgnnhpMnO3woqKP0EcQ4b_yI60w,235
|
|
4
|
+
fast_agent/context.py,sha256=nBelOqehSH91z3aG2nYhwETP-biRzz-iuA2fqmKdHP8,7700
|
|
5
|
+
fast_agent/context_dependent.py,sha256=KU1eydVBoIt4bYOZroqxDgE1AUexDaZi7hurE26QsF4,1584
|
|
6
|
+
fast_agent/event_progress.py,sha256=OETeh-4jJGyxvvPAlVTzW4JsCbFUmOTo-ti0ROgtG5M,1999
|
|
7
|
+
fast_agent/interfaces.py,sha256=R2C1TzNxAO8Qxaam5oHthfhHRNKoP78FtKSV6vPy_Gk,6251
|
|
8
|
+
fast_agent/mcp_server_registry.py,sha256=TDCNpQIehsh1PK4y7AWp_rkQMcwYx7FaouUbK3kWNZo,2635
|
|
9
|
+
fast_agent/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
fast_agent/agents/__init__.py,sha256=kBI2VWTitLyWf8K3dFMyuE-K7Ufp7mkHBomM2K3I8H8,1128
|
|
11
|
+
fast_agent/agents/agent_types.py,sha256=ugolD3lC2KxSfBYjjRf9HjNATZaFx1o4Fhjb15huSgk,1776
|
|
12
|
+
fast_agent/agents/llm_agent.py,sha256=iuy3kO5Q-f9bm3tjYLG2Wurd0gK2sLhTfTkSnfVWzSw,8311
|
|
13
|
+
fast_agent/agents/llm_decorator.py,sha256=yzaYqsT8lqey4dbZrv1oK9qUqf8I2RMPYiWOy0uVHqA,16443
|
|
14
|
+
fast_agent/agents/mcp_agent.py,sha256=R-OeHu0dO61z0vQwtCqKL2WLs1o9kHdsu74Fu4ALaCM,35494
|
|
15
|
+
fast_agent/agents/tool_agent.py,sha256=zSaVQH-mBICgE3ildeZx24i00u_KMOk5P4OuJBTiQ3g,6571
|
|
16
|
+
fast_agent/agents/workflow/chain_agent.py,sha256=Pd8dOH_YdKu3LXsKa4fwqzY_B2qVuhzdfCUiKi5v17s,6293
|
|
17
|
+
fast_agent/agents/workflow/evaluator_optimizer.py,sha256=rhzazy8Aj-ydId6kmBC77TmtYZ5mirSe7eV6PPMWkBA,12040
|
|
18
|
+
fast_agent/agents/workflow/iterative_planner.py,sha256=CTtDpK-YGrFFZMQQmFeE-2I_9-cZv23pNwUoh8w5voA,20478
|
|
19
|
+
fast_agent/agents/workflow/orchestrator_models.py,sha256=X_hD66_YvdGIsNra3XWbVKj2KyNVL7usCdNsMsDXV3Q,7238
|
|
20
|
+
fast_agent/agents/workflow/orchestrator_prompts.py,sha256=EXKEI174sshkZyPPEnWbwwNafzSPuA39MXL7iqG9cWc,9106
|
|
21
|
+
fast_agent/agents/workflow/parallel_agent.py,sha256=DlJXDURAfx-WBF297tKBLfH93gDFSAPUyEmJr7QNGyw,7476
|
|
22
|
+
fast_agent/agents/workflow/router_agent.py,sha256=KWLOZMFI4YPn0fqzR001qLFbOe7DYxx-E2c0BgIgO-g,11081
|
|
23
|
+
fast_agent/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
fast_agent/cli/__main__.py,sha256=VD-UuXvIHJtrDGgVVpsAZGJ_GfVTalSD1Kx9vzixzfM,1129
|
|
25
|
+
fast_agent/cli/constants.py,sha256=KawdkaN289nVB02DKPB4IVUJ8-fohIUD0gLfOp0P7B8,551
|
|
26
|
+
fast_agent/cli/main.py,sha256=EkNOpNobFW83fkzJL4lkdhtqOq7c_f55KFpBR9VrFTU,3905
|
|
27
|
+
fast_agent/cli/terminal.py,sha256=tDN1fJ91Nc_wZJTNafkQuD7Z7gFscvo1PHh-t7Wl-5s,1066
|
|
28
|
+
fast_agent/cli/commands/check_config.py,sha256=nMiOBs-Sc7XqUU6tLReLn1JPXHqjR0Kuz4rCa3mDXp0,22831
|
|
29
|
+
fast_agent/cli/commands/go.py,sha256=VRiHq9h1UGIndLdQJMAwEM6bwTGy-h5n6w__bYCGaHM,15094
|
|
30
|
+
fast_agent/cli/commands/quickstart.py,sha256=hQZYlvktPdDNdaZOZkBgcvi8u0bMW5yFhz4BLBZ251I,21175
|
|
31
|
+
fast_agent/cli/commands/server_helpers.py,sha256=BmljUNLIcZdFpffYxEPfJf8rrX3JhTzMA7VONoZLAjM,3650
|
|
32
|
+
fast_agent/cli/commands/setup.py,sha256=nPo9sI1BZTM_7P97De_nzmX61JUlIt9Mti8c2K7D9aw,6208
|
|
33
|
+
fast_agent/cli/commands/url_parser.py,sha256=ivWrsODeVO9GGERkaTawYIxZuf57uRga1gubwT3n3vU,5907
|
|
34
|
+
fast_agent/core/__init__.py,sha256=hlVPmPYKnR88k8awP3aEn5V3DhNK4UwaLA1DmUDNIfQ,448
|
|
35
|
+
fast_agent/core/agent_app.py,sha256=cdzNwpb--SUNYbhkUX6RolqVnxJ5WSchxw5I4gFrvpk,16836
|
|
36
|
+
fast_agent/core/core_app.py,sha256=_8Di00HD2BzWhCAaopAUS0Hzc7pg0249QUUfPuLZ36A,4266
|
|
37
|
+
fast_agent/core/direct_decorators.py,sha256=eHhQfKLbeaoH-W0snzAVJRxga7wTNGXBk5DEJTAbZB8,23642
|
|
38
|
+
fast_agent/core/direct_factory.py,sha256=HGGnnF4Z9k_N3r0Iin_sp2Ch308To1oKX8JTKHjuUq0,21350
|
|
39
|
+
fast_agent/core/error_handling.py,sha256=xoyS2kLe0eG0bj2eSJCJ2odIhGUve2SbDR7jP-A-uRw,624
|
|
40
|
+
fast_agent/core/exceptions.py,sha256=ENAD_qGG67foxy6vDkIvc-lgopIUQy6O7zvNPpPXaQg,2289
|
|
41
|
+
fast_agent/core/fastagent.py,sha256=duxLEQMXdKqvKXAxbbe86_V7ZQR-etR-OMt-XfvLB1I,25351
|
|
42
|
+
fast_agent/core/prompt.py,sha256=qNUFlK3KtU7leYysYUglzBYQnEYiXu__iR_T8189zc0,203
|
|
43
|
+
fast_agent/core/validation.py,sha256=GZ0hUTxkr5KMY1wr6_ifDy91Ycvcx384gZEMOwdie9w,12681
|
|
44
|
+
fast_agent/core/executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
+
fast_agent/core/executor/executor.py,sha256=egmu1bBJmNjfkMZRdaF2CowyHu0t20TiroKBEGgn2t8,9398
|
|
46
|
+
fast_agent/core/executor/task_registry.py,sha256=PCALFeYtkQrPBg4RBJnlA0aDI8nHclrNkHGUS4kV3W8,1242
|
|
47
|
+
fast_agent/core/executor/workflow_signal.py,sha256=Cg1uZBk3fn8kXhPOg-wINNuVaf3v9pvLD6NbqWy5Z6E,11142
|
|
48
|
+
fast_agent/core/logging/__init__.py,sha256=dFW2bbTtz45zebUuQs7RVi7mg1RJm4DHH6TGfBMhW14,167
|
|
49
|
+
fast_agent/core/logging/events.py,sha256=kmk6sWxYm4DZGRRNVUi2cOL4X1Pr1cr535uBmStBZxo,4254
|
|
50
|
+
fast_agent/core/logging/json_serializer.py,sha256=kQDkwTHIkHSQgbhDOJhMoetNvfJVMZGOScaKoLX8kmw,5797
|
|
51
|
+
fast_agent/core/logging/listeners.py,sha256=dubbGJoieryyhXN-JF-GrjkW-dgMq93bElM-NBkwA_Q,9366
|
|
52
|
+
fast_agent/core/logging/logger.py,sha256=L-hLfUGFCIABoNYDiUkNHWvFxL6j-6zn5Pc5E7aC44M,11074
|
|
53
|
+
fast_agent/core/logging/transport.py,sha256=i_WYXk5mqyfetT72bCYrbdrMWcuL1HJCyeQKfQg7U2w,16994
|
|
54
|
+
fast_agent/history/history_exporter.py,sha256=Ab5Z85LhwjjOfXkc7aJVpQJUMGNYr7MpR4qtKHTrXuA,1427
|
|
55
|
+
fast_agent/human_input/__init__.py,sha256=4Jr_0JLJwdQ3iEUNd6Api9InldtnRMDv_WeZq_WEHpA,935
|
|
56
|
+
fast_agent/human_input/elicitation_handler.py,sha256=U6278SJLIu1tosyL6qvo5OVwMSVE03gpGlWoF8YDlvQ,3985
|
|
57
|
+
fast_agent/human_input/elicitation_state.py,sha256=L_vSTpw1-TSDumRYa89Me-twWRbUL2w7GNVhVJmn3KE,1152
|
|
58
|
+
fast_agent/human_input/form_fields.py,sha256=aE7HdR-wOPO_6HllNaJXtn3BzpPsC4TctUApbveRk8g,7644
|
|
59
|
+
fast_agent/human_input/simple_form.py,sha256=_flUll9z93VPjKqLS7gvz4L1_YJ3-KNx8_ZpUaaxhoQ,3508
|
|
60
|
+
fast_agent/human_input/types.py,sha256=3Zz89yIt8SuDAVAaRy-r4Vw0-M6AWahwbqQ0yOcoe20,954
|
|
61
|
+
fast_agent/llm/__init__.py,sha256=MCsrkfnTQXYvn0SofJ-JFmp1l1jX_eidgvegbWbgpsw,184
|
|
62
|
+
fast_agent/llm/fastagent_llm.py,sha256=CqlvvT2w3WkmNsJHH-VUAYh7FtmQIj3TRJAeB6yb3MI,24200
|
|
63
|
+
fast_agent/llm/memory.py,sha256=POFoBVMHK0wX4oLd3Gz-6Ru3uC4kTCvAqsVQ77e7KJA,8551
|
|
64
|
+
fast_agent/llm/model_database.py,sha256=CXpAncjfFGmzjVyvAaKE5QuvDoLwMWXqUHngv_4oDl8,12609
|
|
65
|
+
fast_agent/llm/model_factory.py,sha256=0quhsqz816GxEM_vuRaJ4n6U8C3lp5KxtIphxepIXVI,12862
|
|
66
|
+
fast_agent/llm/model_info.py,sha256=DAIMW70W-EFqNLIudhjHJE2gobHUAKg90gkwOPuaFUc,4125
|
|
67
|
+
fast_agent/llm/prompt_utils.py,sha256=yWQHykoK13QRF7evHUKxVF0SpVLN-Bsft0Yixzvn0g0,4825
|
|
68
|
+
fast_agent/llm/provider_key_manager.py,sha256=igzs1ghXsUp0wA4nJVVfWCWiYOib8Ux4jMGlhWbgXu8,3396
|
|
69
|
+
fast_agent/llm/provider_types.py,sha256=Ya0MGo_4cE0oCwinqPvr9SJUwx4hEJ7CFbCrLB_27FI,1142
|
|
70
|
+
fast_agent/llm/request_params.py,sha256=OW9WnQAD-I2fz2JzMsqPY2wwwHFG0SI4yAvC1WxTfNY,1735
|
|
71
|
+
fast_agent/llm/sampling_converter.py,sha256=YEUpdVeZlJNDljCuwrXyhsb40o0-1QuWGTuorQnvhbo,3102
|
|
72
|
+
fast_agent/llm/usage_tracking.py,sha256=6FRIIimIaAoSlYTCGVG00GuavGRIFbOBEBWHvfBxWw0,16791
|
|
73
|
+
fast_agent/llm/internal/passthrough.py,sha256=0P7qc13_xTV1aMHJmZ2KQEtMtGtu0H7ArkEL6hiy5_M,5209
|
|
74
|
+
fast_agent/llm/internal/playback.py,sha256=HzV0BitORA977_3OWAbMZjLZpIHBKt-_PeOO3BeKGlI,5028
|
|
75
|
+
fast_agent/llm/internal/silent.py,sha256=TVhjp0sEcPpR35n_QjYrMu0CKVX2humAt1GBR6y_itE,1563
|
|
76
|
+
fast_agent/llm/internal/slow.py,sha256=MQf21cK7aM0yPN1_j1hSJRTEp4UGbrPo_sCP81WDcxQ,1310
|
|
77
|
+
fast_agent/llm/provider/anthropic/anthropic_utils.py,sha256=zkeMpAlV9YW9pP1FObkyqR8wg8e-Xir9SCwsom94zao,3246
|
|
78
|
+
fast_agent/llm/provider/anthropic/llm_anthropic.py,sha256=GGfNM9dTVy17YTGOxaat-YlJlW2iWi-pcBmVg_ejJPE,25288
|
|
79
|
+
fast_agent/llm/provider/anthropic/multipart_converter_anthropic.py,sha256=fO6qoKvG2ede85CvdvMipOlATwLjbGKahvsu2OzJhvk,16460
|
|
80
|
+
fast_agent/llm/provider/bedrock/bedrock_utils.py,sha256=mqWCCeB1gUQSL2KRUMqpFjvHZ0ZTJugCsd5YOrx6U30,7750
|
|
81
|
+
fast_agent/llm/provider/bedrock/llm_bedrock.py,sha256=XGB4bGZt74nQnGz0LY4HOSffdaRbz-5UWXX6fyjPPmk,99755
|
|
82
|
+
fast_agent/llm/provider/google/google_converter.py,sha256=iQZps4773Bc8SUODduLpfkVpT3J1rIg1bFgLQ2CCqZc,18926
|
|
83
|
+
fast_agent/llm/provider/google/llm_google_native.py,sha256=jHJ3dXDltFE9tJhvPe8OuHardIHAJqmDrJkhYpYZkeY,18843
|
|
84
|
+
fast_agent/llm/provider/openai/llm_aliyun.py,sha256=ti7VHTpwl0AG3ytwBERpDzVtacvCfamKnl2bAnTE96s,1213
|
|
85
|
+
fast_agent/llm/provider/openai/llm_azure.py,sha256=O-TIEL6hGOArqRlvEjocaeW4OMUaelSnh6xpqhrrcHQ,6070
|
|
86
|
+
fast_agent/llm/provider/openai/llm_deepseek.py,sha256=aAMX7pd1qDfl54Z9pLvJTVYETc4yKKMRYrEMiPIhd7w,3762
|
|
87
|
+
fast_agent/llm/provider/openai/llm_generic.py,sha256=O_mmu3o9LeAZ6Kp405I-GfwrS8AuVkyX3tT6aCDCfLY,1168
|
|
88
|
+
fast_agent/llm/provider/openai/llm_google_oai.py,sha256=u1yZVeDds9z2hvydz_kUpFe2RANTNwEtlPgB-OEmgrY,1095
|
|
89
|
+
fast_agent/llm/provider/openai/llm_groq.py,sha256=trNSy3T94_fJWAhVn51iESP_J7sQh_23ufVegKKNHBs,5247
|
|
90
|
+
fast_agent/llm/provider/openai/llm_openai.py,sha256=OW1IwDn9sKBoITwUZYc3kHNyRLzJnC4qYcBwVytG8eA,22196
|
|
91
|
+
fast_agent/llm/provider/openai/llm_openrouter.py,sha256=RBTUkNBRqE8WoucCoVnXP5GhnMwc2tiRacXbMHVf1xM,1943
|
|
92
|
+
fast_agent/llm/provider/openai/llm_tensorzero_openai.py,sha256=yrV0kZ2zRohErdjhvWGDTl0OnPi2SbuzY_8MchXiVTU,5466
|
|
93
|
+
fast_agent/llm/provider/openai/llm_xai.py,sha256=fEyO9XlU3Ef1a-cXdJl0Qe-FmE562cA-UJOGvzqLO6M,1375
|
|
94
|
+
fast_agent/llm/provider/openai/multipart_converter_openai.py,sha256=M7cbM4F8_xycPtVHJv1kBYYBX7KRXyYPCDb1YKQEgo0,20925
|
|
95
|
+
fast_agent/llm/provider/openai/openai_multipart.py,sha256=uuoRMYWiznYksBODbknBuqe65UxEHE1h7AphHpdnCCM,6864
|
|
96
|
+
fast_agent/llm/provider/openai/openai_utils.py,sha256=RI9UgF7SGkZ02bAep7glvLy3erbismmZp7wXDsRoJPQ,2034
|
|
97
|
+
fast_agent/mcp/__init__.py,sha256=447bAeavOiy_Y8hKSs1XBfmfIKTcleYtdDb-sLFEkac,1114
|
|
98
|
+
fast_agent/mcp/common.py,sha256=MpSC0fLO21RcDz4VApah4C8_LisVGz7OXkR17Xw-9mY,431
|
|
99
|
+
fast_agent/mcp/elicitation_factory.py,sha256=p9tSTcs1KSCXkFcFv1cG7vJBpS1PedOJ5bcBJp0qKw4,3172
|
|
100
|
+
fast_agent/mcp/elicitation_handlers.py,sha256=LWNKn850Ht9V1SGTfAZDptlsgzrycNhOPNsCcqzsuUY,6884
|
|
101
|
+
fast_agent/mcp/gen_client.py,sha256=Q0hhCVzC659GsvTLJIbhUBgGwsAJRL8b3ejTFokyjn4,3038
|
|
102
|
+
fast_agent/mcp/hf_auth.py,sha256=ndDvR7E9LCc5dBiMsStFXtvvX9lYrL-edCq_qJw4lDw,4476
|
|
103
|
+
fast_agent/mcp/interfaces.py,sha256=xCWONGXe4uQSmmBlMZRD3mflPegTJnz2caVNihEl3ok,2411
|
|
104
|
+
fast_agent/mcp/logger_textio.py,sha256=4YLVXlXghdGm1s_qp1VoAWEX_eWufBfD2iD7l08yoak,3170
|
|
105
|
+
fast_agent/mcp/mcp_agent_client_session.py,sha256=XRCliiYMxbCbkqS2VSrw7tAtnkLIP9HSRpSWaXW02MQ,13663
|
|
106
|
+
fast_agent/mcp/mcp_aggregator.py,sha256=5J1QBGJGZMW7QlqKCWk77_THEzKwiTzKYsqaO_DrTTw,53180
|
|
107
|
+
fast_agent/mcp/mcp_connection_manager.py,sha256=IinYz2wdxPC5s3cAEb1w3kDtJAfUoMVsGUIHDogDxCo,18220
|
|
108
|
+
fast_agent/mcp/mcp_content.py,sha256=F9bgJ57EO9sgWg1m-eTNM6xd9js79mHKf4e9O8K8jrI,8829
|
|
109
|
+
fast_agent/mcp/mime_utils.py,sha256=D6YXNdZJ351BjacSW5o0sVF_hrWuRHD6UyWS4TDlLZI,2915
|
|
110
|
+
fast_agent/mcp/prompt.py,sha256=U3jAIjGyGqCpS96zKf0idC7PI4YdFHq-3qjpCsEybxQ,5983
|
|
111
|
+
fast_agent/mcp/prompt_message_extended.py,sha256=-sw6FITvN0rTeIVWDUslNTPYyFEieToydOAf1-phQLs,4650
|
|
112
|
+
fast_agent/mcp/prompt_render.py,sha256=AqDaQqM6kqciV9X79S5rsRr3VjcQ_2JOiLaHqpRzsS4,2888
|
|
113
|
+
fast_agent/mcp/prompt_serialization.py,sha256=oivhqW3WjKYMTw2zE6_LOt8PY7K1ktZr9z9dk1XH9I0,17906
|
|
114
|
+
fast_agent/mcp/resource_utils.py,sha256=cu-l9aOy-NFs8tPihYRNjsB2QSuime8KGOGpUvihp84,6589
|
|
115
|
+
fast_agent/mcp/sampling.py,sha256=3EhEguls5GpVMr_SYrVQcYSRXlryGmqidn-zbFaeDMk,6711
|
|
116
|
+
fast_agent/mcp/ui_agent.py,sha256=nrnBGS87hHdpbS_9Vl59Z6ar6FKTZMz9Yhmz_9FM8dY,1434
|
|
117
|
+
fast_agent/mcp/ui_mixin.py,sha256=iOlSNJVPwiMUun0clCiWyot59Qgy8R7ZvUgH2afRnQA,7662
|
|
118
|
+
fast_agent/mcp/helpers/__init__.py,sha256=o6-HuX6bEVFnfT_wgclFOVb1NxtOsJEOnHX8L2IqDdw,857
|
|
119
|
+
fast_agent/mcp/helpers/content_helpers.py,sha256=2os7b6pZHLE-Nu9uEgw5yafQtadH9J2jyAG_g9Wk8uA,5828
|
|
120
|
+
fast_agent/mcp/helpers/server_config_helpers.py,sha256=yCwdIEVvarM32dSmm5Ehb7E3qZrmg10rToWnzZmEpOE,969
|
|
121
|
+
fast_agent/mcp/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
+
fast_agent/mcp/prompts/__main__.py,sha256=Jsx30MceW6_f0rU_RJw2qQVB7zj2yRPP8mXXjBuJiNw,145
|
|
123
|
+
fast_agent/mcp/prompts/prompt_constants.py,sha256=Q9W0t3rOXl2LHIG9wcghApUV2QZ1iICuo7SwVwHUf3c,566
|
|
124
|
+
fast_agent/mcp/prompts/prompt_helpers.py,sha256=lvcgG1D61FimGUS5rYifMmmidWwFpIs3Egvjf1sfnkE,7486
|
|
125
|
+
fast_agent/mcp/prompts/prompt_load.py,sha256=6_npQBlZ3JzCwcb8Jwxv1zzUnB4cNuSVVj-Kxf3tmE0,5384
|
|
126
|
+
fast_agent/mcp/prompts/prompt_server.py,sha256=yc7Ui_9nR0oQimZjX19wp4AkGJIWB8pYP3wB9jma5ys,19241
|
|
127
|
+
fast_agent/mcp/prompts/prompt_template.py,sha256=SAklXs9wujYqqEWv5vzRI_cdjSmGnWlDmPLZ5qkXZO4,15695
|
|
128
|
+
fast_agent/mcp/server/__init__.py,sha256=AJFNzdmuHPRL3jqFhDVDJste_zYE_KJ3gGYDsbghvl0,156
|
|
129
|
+
fast_agent/mcp/server/agent_server.py,sha256=zJMFnPfXPsbLt5ZyGMTN90YzIzwV7TaSQ4WYs9lnB2Q,20194
|
|
130
|
+
fast_agent/resources/examples/data-analysis/analysis-campaign.py,sha256=0Z7TZ6QsSwYJPGJZRMl8742980QHDgibC6Jjw2jOHms,7292
|
|
131
|
+
fast_agent/resources/examples/data-analysis/analysis.py,sha256=y9lSSZp_HfgiJy0M23heYSI61bazK89PIzM9m1nVP_o,2579
|
|
132
|
+
fast_agent/resources/examples/data-analysis/fastagent.config.yaml,sha256=ini94PHyJCfgpjcjHKMMbGuHs6LIj46F1NwY0ll5HVk,1609
|
|
133
|
+
fast_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv,sha256=pcMeOL1_r8m8MziE6xgbBrQbjl5Ijo98yycZn7O-dlk,227977
|
|
134
|
+
fast_agent/resources/examples/mcp/elicitations/elicitation_account_server.py,sha256=ZrPcj0kv75QXvtN0J_vhCmwxycnAodv35adUBZ9_8Ss,2903
|
|
135
|
+
fast_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py,sha256=JSRSZ2rKqsHB0gt7LvyyVR9whnhmi_8kbvc9V6jvx2M,9329
|
|
136
|
+
fast_agent/resources/examples/mcp/elicitations/elicitation_game_server.py,sha256=z9kHdNc6XWjAWkvet7inVBIcYxfWoxU6n9iHrsEqU7A,6206
|
|
137
|
+
fast_agent/resources/examples/mcp/elicitations/fastagent.config.yaml,sha256=HPe0cuFL4-rzS4hHNgZiLMPEv0jYXOp7iSsrUliAaqs,1080
|
|
138
|
+
fast_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example,sha256=1vkBmh9f4mnQZm6-2B7vyU1OepImviPW5MNAJkvUIPE,394
|
|
139
|
+
fast_agent/resources/examples/mcp/elicitations/forms_demo.py,sha256=caC7UFs2-vWEWporu9deqpfSJOYya482kr-tIIWC9U4,4351
|
|
140
|
+
fast_agent/resources/examples/mcp/elicitations/game_character.py,sha256=Me4-vNsjZTFkV95fUXMYpmDaT8v6hnXsXey9eh53W8k,2374
|
|
141
|
+
fast_agent/resources/examples/mcp/elicitations/game_character_handler.py,sha256=kD4aBZ98GoKDqCKTVlTqsNaQZifUxbfYXHPA93aTGSE,11217
|
|
142
|
+
fast_agent/resources/examples/mcp/elicitations/tool_call.py,sha256=HgaP1AP96As9Vql69Ov2CXH4uPccjOeZSRa0n8-hBGc,531
|
|
143
|
+
fast_agent/resources/examples/mcp/state-transfer/agent_one.py,sha256=lVEIidIcFyeYwsR6h_2h5Rnmfu_KnHIrRo53Aehg85Q,456
|
|
144
|
+
fast_agent/resources/examples/mcp/state-transfer/agent_two.py,sha256=7TC2Z3uuL-x27LXGweh7ziHwDXFZYJq9f5x-DAWTsqM,479
|
|
145
|
+
fast_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml,sha256=A6CUcDqnFXlkhsA_Mw-I0ys2Egn7a37AfVSWl89lvxA,797
|
|
146
|
+
fast_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example,sha256=pVGyO_c6j3BToNpnL0d6W1FD5iLcuCNBrqA1sYMV-cA,422
|
|
147
|
+
fast_agent/resources/examples/researcher/fastagent.config.yaml,sha256=TbVMHQCKcytVr44o0cpsgP-tAJ2S2OlTgn6VnXSTIpM,2242
|
|
148
|
+
fast_agent/resources/examples/researcher/researcher-eval.py,sha256=qr_9TpzOSwEFENR5bkgieDyIrbst6nWjtlwDJzp7ok4,1834
|
|
149
|
+
fast_agent/resources/examples/researcher/researcher-imp.py,sha256=LmNcs6rOYnJabspxo6xgpiI9tzHVE1sJUFwLK3QrV2E,7880
|
|
150
|
+
fast_agent/resources/examples/researcher/researcher.py,sha256=MZfGvHfxqutzkCNEkAKioXGxHn-E4JggRQQz43wV5pM,1334
|
|
151
|
+
fast_agent/resources/examples/tensorzero/.env.sample,sha256=khV_apbP4XprpNuIaeVicnHaVHEkwIdWGyZCvW1OLDc,35
|
|
152
|
+
fast_agent/resources/examples/tensorzero/Makefile,sha256=BOvcJvPBAJN2MDh8brLsy2leHGwuT_bBjPzakOsUSCU,427
|
|
153
|
+
fast_agent/resources/examples/tensorzero/README.md,sha256=xsA1qWjg2mI240jlbeFYWjYm_pQLsGeQiPiSlEtayeQ,2126
|
|
154
|
+
fast_agent/resources/examples/tensorzero/agent.py,sha256=TCa3eIsvQufJ8Gy1yXK0MjgOEtdiU8y5qpjIARTyypU,1273
|
|
155
|
+
fast_agent/resources/examples/tensorzero/docker-compose.yml,sha256=YgmWgoHHDDTGeqRlU8Z21mLdEqo48IoKZsnlXaDZkrc,2851
|
|
156
|
+
fast_agent/resources/examples/tensorzero/fastagent.config.yaml,sha256=3uJJ9p-0evDG48zr2QneektO4fe_h4uRPh1dyWfe7-k,355
|
|
157
|
+
fast_agent/resources/examples/tensorzero/image_demo.py,sha256=fq1Ac1ZksL_AiMN1T2r-tBRW79sWtbEY_QCViLsIAMQ,2124
|
|
158
|
+
fast_agent/resources/examples/tensorzero/simple_agent.py,sha256=jpK4p3KbfOfjhqLJNUFX4L_zll05buI2Cru8JBRnrIY,859
|
|
159
|
+
fast_agent/resources/examples/tensorzero/demo_images/clam.jpg,sha256=K1NWrhz5QMfgjZfDMMIVctWwbwTyJSsPHLDaUMbcn18,22231
|
|
160
|
+
fast_agent/resources/examples/tensorzero/demo_images/crab.png,sha256=W7R3bSKKDmZCjxJEmFk0pBXVhXXhfPGM1gIiVuv_eu4,58413
|
|
161
|
+
fast_agent/resources/examples/tensorzero/demo_images/shrimp.png,sha256=2r3c6yHE25MpVRDTTwxjAGs1ShJ2UI-qxJqbxa-9ew4,7806
|
|
162
|
+
fast_agent/resources/examples/tensorzero/mcp_server/Dockerfile,sha256=pujKW5xDY5q0PvIYsn8Wsh9Tz2F3sVuKTJc3o8lgt4M,681
|
|
163
|
+
fast_agent/resources/examples/tensorzero/mcp_server/entrypoint.sh,sha256=yLUXZKd4mF2k_ZFAd6125ZstLmrtksePpfgCNdewSyU,1123
|
|
164
|
+
fast_agent/resources/examples/tensorzero/mcp_server/mcp_server.py,sha256=8Wr6VzNFihri3mv9wLo37i5Ly1VWL4s4jSnfiRG7Ez0,933
|
|
165
|
+
fast_agent/resources/examples/tensorzero/mcp_server/pyproject.toml,sha256=3AppZ_HbIEmRGg_phGuEOq-Q63CY_IIsrIBr658ka9U,228
|
|
166
|
+
fast_agent/resources/examples/tensorzero/tensorzero_config/system_schema.json,sha256=q81vtb8eyX1gU0qOhT_BFNo7nI2Lg2o-D_Bvp8watEI,626
|
|
167
|
+
fast_agent/resources/examples/tensorzero/tensorzero_config/system_template.minijinja,sha256=_Ekz9YuE76pkmwtcMNJeDlih2U5vPRgFB5wFojAVde8,501
|
|
168
|
+
fast_agent/resources/examples/tensorzero/tensorzero_config/tensorzero.toml,sha256=wYDKzHyX0A2x42d1vF5a72ot304iTP8_i5Y1rzAcCEA,890
|
|
169
|
+
fast_agent/resources/examples/workflows/chaining.py,sha256=GOBAwn97Io0mNe6H6l7UKENqsR6FL03HKgcXYhMTUCA,890
|
|
170
|
+
fast_agent/resources/examples/workflows/evaluator.py,sha256=gfdjKctKpEiPB23gqgkVpJ_patBuotqt8IFuPTG5i8g,3112
|
|
171
|
+
fast_agent/resources/examples/workflows/fastagent.config.yaml,sha256=qaxk-p7Pl7JepdL3a7BTl0CIp4LHCXies7pFdVWS9xk,783
|
|
172
|
+
fast_agent/resources/examples/workflows/graded_report.md,sha256=QVF38xEtDIO1a2P-xv2hlBEG6KKYughtFkzDhY2NpzE,2726
|
|
173
|
+
fast_agent/resources/examples/workflows/human_input.py,sha256=ammL7aU_U0K3XsjLwmgq0_HznaARVDO8urPEWJYbWqY,807
|
|
174
|
+
fast_agent/resources/examples/workflows/orchestrator.py,sha256=E99EqLNHKjC9YtuME-HqT0lNCCxiJJPdy2jToOEL7zw,2541
|
|
175
|
+
fast_agent/resources/examples/workflows/parallel.py,sha256=JJRxUdEgqHYW5-_ZIFDb4oUx8gsZicyxYwCPYmNWsDE,1841
|
|
176
|
+
fast_agent/resources/examples/workflows/router.py,sha256=_XLOsjrjmLe2i-eGmClPASGJjaf57RVQjld6uCuv_Lk,2090
|
|
177
|
+
fast_agent/resources/examples/workflows/short_story.md,sha256=XN9I2kzCcMmke3dE5F2lyRH5iFUZUQ8Sy-hS3rm_Wlc,1153
|
|
178
|
+
fast_agent/resources/examples/workflows/short_story.txt,sha256=X3y_1AyhLFN2AKzCKvucJtDgAFIJfnlbsbGZO5bBWu0,1187
|
|
179
|
+
fast_agent/resources/setup/.gitignore,sha256=UQKYvhK6samGg5JZg613XiuGUkUAz2qzE1WfFa8J0mQ,245
|
|
180
|
+
fast_agent/resources/setup/agent.py,sha256=co2lm190iQqOlRhup78X5BKHSB-RqLn3tZdxh2yaGhA,422
|
|
181
|
+
fast_agent/resources/setup/fastagent.config.yaml,sha256=JpezZSP5-ybUlZJaeQG1EoUONXmzmDhdAR6JIpbb-jA,1356
|
|
182
|
+
fast_agent/resources/setup/fastagent.secrets.yaml.example,sha256=ht-i2_SpAyeXG2OnG_vOA1n7gRsGIInxp9g5Nio-jpI,1038
|
|
183
|
+
fast_agent/tools/elicitation.py,sha256=8FaNvuN__LAM328VSJ5T4Bg3m8auHraqYvIYv6Eh4KU,13464
|
|
184
|
+
fast_agent/types/__init__.py,sha256=IpUWlzx3u_3h99F2IKJ8aPjyGZXguOwkOVJKGrst6hg,951
|
|
185
|
+
fast_agent/types/llm_stop_reason.py,sha256=bWe97OfhALUe8uQeAQOnTdPlYzJiabIfo8u38kPgj3Q,2293
|
|
186
|
+
fast_agent/ui/__init__.py,sha256=MXxTQjFdF7mI_3JHxBPd-aoZYLlxV_-51-Trqgv5-3w,1104
|
|
187
|
+
fast_agent/ui/console.py,sha256=Gjf2QLFumwG1Lav__c07X_kZxxEUSkzV-1_-YbAwcwo,813
|
|
188
|
+
fast_agent/ui/console_display.py,sha256=x_0pmQgMAasfUfv_MwoGJyXSwT7y-BxPGWJWGblSSJQ,40367
|
|
189
|
+
fast_agent/ui/elicitation_form.py,sha256=t3UhBG44YmxTLu1RjCnHwW36eQQaroE45CiBGJB2czg,29410
|
|
190
|
+
fast_agent/ui/elicitation_style.py,sha256=rtZiJH4CwTdkDLSzDDvThlZyIyuRX0oVNzscKiHvry8,3835
|
|
191
|
+
fast_agent/ui/enhanced_prompt.py,sha256=w99sJkdAn2WVtIT9hLumhz1DQY-H9a0Qq80JSM0jRg8,40080
|
|
192
|
+
fast_agent/ui/interactive_prompt.py,sha256=lxY26PNBNihtccO4iI7CxIag_9CxEcbajbIPdzqnEcM,43230
|
|
193
|
+
fast_agent/ui/mcp_ui_utils.py,sha256=UVX-VZI7PaJ8JlYuWsletml4K3XrUGUFRn4lqFwsAWg,8099
|
|
194
|
+
fast_agent/ui/mermaid_utils.py,sha256=MpcRyVCPMTwU1XeIxnyFg0fQLjcyXZduWRF8NhEqvXE,5332
|
|
195
|
+
fast_agent/ui/progress_display.py,sha256=hajDob65PttiJ2mPS6FsCtnmTcnyvDWGn-UqQboXqkQ,361
|
|
196
|
+
fast_agent/ui/rich_progress.py,sha256=vMeDD5cybsPf_0IjOM98U8TVaE_yYIOKZa8JnRgTYUo,7451
|
|
197
|
+
fast_agent/ui/usage_display.py,sha256=ltJpn_sDzo8PDNSXWx-QdEUbQWUnhmajCItNt5mA5rM,7285
|
|
198
|
+
fast_agent_mcp-0.3.0.dist-info/METADATA,sha256=Vff6l-8Pb92peB_JNSm5Z-qYTbx9px2Q-jOY59KT-F0,30462
|
|
199
|
+
fast_agent_mcp-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
200
|
+
fast_agent_mcp-0.3.0.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
|
|
201
|
+
fast_agent_mcp-0.3.0.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
|
|
202
|
+
fast_agent_mcp-0.3.0.dist-info/RECORD,,
|