fast-agent-mcp 0.3.4__py3-none-any.whl → 0.3.6__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/agents/llm_agent.py +15 -1
- fast_agent/agents/mcp_agent.py +73 -1
- fast_agent/agents/tool_agent.py +10 -0
- fast_agent/agents/workflow/router_agent.py +10 -2
- fast_agent/cli/__main__.py +8 -5
- fast_agent/cli/commands/auth.py +393 -0
- fast_agent/cli/commands/check_config.py +76 -4
- fast_agent/cli/commands/go.py +8 -2
- fast_agent/cli/commands/quickstart.py +3 -1
- fast_agent/cli/commands/server_helpers.py +10 -2
- fast_agent/cli/commands/setup.py +7 -9
- fast_agent/cli/constants.py +1 -1
- fast_agent/cli/main.py +3 -1
- fast_agent/config.py +63 -9
- fast_agent/mcp/mcp_aggregator.py +30 -0
- fast_agent/mcp/mcp_connection_manager.py +41 -4
- fast_agent/mcp/oauth_client.py +509 -0
- fast_agent/resources/setup/.gitignore +6 -0
- fast_agent/resources/setup/agent.py +8 -1
- fast_agent/resources/setup/fastagent.config.yaml +1 -2
- fast_agent/resources/setup/pyproject.toml.tmpl +6 -0
- fast_agent/ui/console_display.py +48 -31
- fast_agent/ui/enhanced_prompt.py +8 -0
- fast_agent/ui/interactive_prompt.py +54 -0
- {fast_agent_mcp-0.3.4.dist-info → fast_agent_mcp-0.3.6.dist-info}/METADATA +39 -2
- {fast_agent_mcp-0.3.4.dist-info → fast_agent_mcp-0.3.6.dist-info}/RECORD +29 -27
- {fast_agent_mcp-0.3.4.dist-info → fast_agent_mcp-0.3.6.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.3.4.dist-info → fast_agent_mcp-0.3.6.dist-info}/entry_points.txt +0 -0
- {fast_agent_mcp-0.3.4.dist-info → fast_agent_mcp-0.3.6.dist-info}/licenses/LICENSE +0 -0
fast_agent/ui/console_display.py
CHANGED
|
@@ -26,6 +26,7 @@ class MessageType(Enum):
|
|
|
26
26
|
|
|
27
27
|
USER = "user"
|
|
28
28
|
ASSISTANT = "assistant"
|
|
29
|
+
SYSTEM = "system"
|
|
29
30
|
TOOL_CALL = "tool_call"
|
|
30
31
|
TOOL_RESULT = "tool_result"
|
|
31
32
|
|
|
@@ -44,6 +45,12 @@ MESSAGE_CONFIGS = {
|
|
|
44
45
|
"arrow_style": "dim green",
|
|
45
46
|
"highlight_color": "bright_green",
|
|
46
47
|
},
|
|
48
|
+
MessageType.SYSTEM: {
|
|
49
|
+
"block_color": "yellow",
|
|
50
|
+
"arrow": "●",
|
|
51
|
+
"arrow_style": "dim yellow",
|
|
52
|
+
"highlight_color": "bright_yellow",
|
|
53
|
+
},
|
|
47
54
|
MessageType.TOOL_CALL: {
|
|
48
55
|
"block_color": "magenta",
|
|
49
56
|
"arrow": "◀",
|
|
@@ -144,7 +151,7 @@ class ConsoleDisplay:
|
|
|
144
151
|
name: str | None = None,
|
|
145
152
|
right_info: str = "",
|
|
146
153
|
bottom_metadata: List[str] | None = None,
|
|
147
|
-
|
|
154
|
+
highlight_index: int | None = None,
|
|
148
155
|
max_item_length: int | None = None,
|
|
149
156
|
is_error: bool = False,
|
|
150
157
|
truncate_content: bool = True,
|
|
@@ -159,7 +166,7 @@ class ConsoleDisplay:
|
|
|
159
166
|
name: Optional name to display (agent name, user name, etc.)
|
|
160
167
|
right_info: Information to display on the right side of the header
|
|
161
168
|
bottom_metadata: Optional list of items for bottom separator
|
|
162
|
-
|
|
169
|
+
highlight_index: Index of item to highlight in bottom metadata (0-based), or None
|
|
163
170
|
max_item_length: Optional max length for bottom metadata items (with ellipsis)
|
|
164
171
|
is_error: For tool results, whether this is an error (uses red color)
|
|
165
172
|
truncate_content: Whether to truncate long content
|
|
@@ -199,16 +206,6 @@ class ConsoleDisplay:
|
|
|
199
206
|
if max_item_length:
|
|
200
207
|
display_items = self._shorten_items(bottom_metadata, max_item_length)
|
|
201
208
|
|
|
202
|
-
# Normalize highlight_items
|
|
203
|
-
if highlight_items is None:
|
|
204
|
-
highlight_items = []
|
|
205
|
-
elif isinstance(highlight_items, str):
|
|
206
|
-
highlight_items = [highlight_items]
|
|
207
|
-
|
|
208
|
-
# Shorten highlight items to match if we shortened display items
|
|
209
|
-
if max_item_length:
|
|
210
|
-
highlight_items = self._shorten_items(highlight_items, max_item_length)
|
|
211
|
-
|
|
212
209
|
# Format the metadata with highlighting, clipped to available width
|
|
213
210
|
# Compute available width for the metadata segment (excluding the fixed prefix/suffix)
|
|
214
211
|
total_width = console.console.size.width
|
|
@@ -220,7 +217,7 @@ class ConsoleDisplay:
|
|
|
220
217
|
|
|
221
218
|
metadata_text = self._format_bottom_metadata(
|
|
222
219
|
display_items,
|
|
223
|
-
|
|
220
|
+
highlight_index,
|
|
224
221
|
config["highlight_color"],
|
|
225
222
|
max_width=available,
|
|
226
223
|
)
|
|
@@ -268,11 +265,11 @@ class ConsoleDisplay:
|
|
|
268
265
|
from fast_agent.mcp.helpers.content_helpers import get_text, is_text_content
|
|
269
266
|
|
|
270
267
|
# Determine the style based on message type
|
|
271
|
-
# USER and
|
|
268
|
+
# USER, ASSISTANT, and SYSTEM messages should display in normal style
|
|
272
269
|
# TOOL_CALL and TOOL_RESULT should be dimmed
|
|
273
270
|
if is_error:
|
|
274
271
|
style = "dim red"
|
|
275
|
-
elif message_type in [MessageType.USER, MessageType.ASSISTANT]:
|
|
272
|
+
elif message_type in [MessageType.USER, MessageType.ASSISTANT, MessageType.SYSTEM]:
|
|
276
273
|
style = None # No style means default/normal white
|
|
277
274
|
else:
|
|
278
275
|
style = "dim"
|
|
@@ -464,7 +461,7 @@ class ConsoleDisplay:
|
|
|
464
461
|
def _format_bottom_metadata(
|
|
465
462
|
self,
|
|
466
463
|
items: List[str],
|
|
467
|
-
|
|
464
|
+
highlight_index: int | None,
|
|
468
465
|
highlight_color: str,
|
|
469
466
|
max_width: int | None = None,
|
|
470
467
|
) -> Text:
|
|
@@ -473,8 +470,9 @@ class ConsoleDisplay:
|
|
|
473
470
|
|
|
474
471
|
Args:
|
|
475
472
|
items: List of items to display
|
|
476
|
-
|
|
473
|
+
highlight_index: Index of item to highlight (0-based), or None for no highlighting
|
|
477
474
|
highlight_color: Color to use for highlighting
|
|
475
|
+
max_width: Maximum width for the formatted text
|
|
478
476
|
|
|
479
477
|
Returns:
|
|
480
478
|
Formatted Text object with proper separators and highlighting
|
|
@@ -491,14 +489,7 @@ class ConsoleDisplay:
|
|
|
491
489
|
sep = Text(" | ", style="dim") if i > 0 else Text("")
|
|
492
490
|
|
|
493
491
|
# Prepare item text with potential highlighting
|
|
494
|
-
should_highlight =
|
|
495
|
-
if item in highlight_items:
|
|
496
|
-
should_highlight = True
|
|
497
|
-
else:
|
|
498
|
-
for highlight in highlight_items:
|
|
499
|
-
if item.startswith(highlight) or highlight.endswith(item):
|
|
500
|
-
should_highlight = True
|
|
501
|
-
break
|
|
492
|
+
should_highlight = highlight_index is not None and i == highlight_index
|
|
502
493
|
|
|
503
494
|
item_text = Text(item, style=(highlight_color if should_highlight else "dim"))
|
|
504
495
|
|
|
@@ -569,7 +560,7 @@ class ConsoleDisplay:
|
|
|
569
560
|
tool_name: str,
|
|
570
561
|
tool_args: Dict[str, Any] | None,
|
|
571
562
|
bottom_items: List[str] | None = None,
|
|
572
|
-
|
|
563
|
+
highlight_index: int | None = None,
|
|
573
564
|
max_item_length: int | None = None,
|
|
574
565
|
name: str | None = None,
|
|
575
566
|
) -> None:
|
|
@@ -579,7 +570,7 @@ class ConsoleDisplay:
|
|
|
579
570
|
tool_name: Name of the tool being called
|
|
580
571
|
tool_args: Arguments being passed to the tool
|
|
581
572
|
bottom_items: Optional list of items for bottom separator (e.g., available tools)
|
|
582
|
-
|
|
573
|
+
highlight_index: Index of item to highlight in the bottom separator (0-based), or None
|
|
583
574
|
max_item_length: Optional max length for bottom items (with ellipsis)
|
|
584
575
|
name: Optional agent name
|
|
585
576
|
"""
|
|
@@ -596,7 +587,7 @@ class ConsoleDisplay:
|
|
|
596
587
|
name=name,
|
|
597
588
|
right_info=right_info,
|
|
598
589
|
bottom_metadata=bottom_items,
|
|
599
|
-
|
|
590
|
+
highlight_index=highlight_index,
|
|
600
591
|
max_item_length=max_item_length,
|
|
601
592
|
truncate_content=True,
|
|
602
593
|
)
|
|
@@ -683,7 +674,7 @@ class ConsoleDisplay:
|
|
|
683
674
|
self,
|
|
684
675
|
message_text: Union[str, Text, "PromptMessageExtended"],
|
|
685
676
|
bottom_items: List[str] | None = None,
|
|
686
|
-
|
|
677
|
+
highlight_index: int | None = None,
|
|
687
678
|
max_item_length: int | None = None,
|
|
688
679
|
name: str | None = None,
|
|
689
680
|
model: str | None = None,
|
|
@@ -694,7 +685,7 @@ class ConsoleDisplay:
|
|
|
694
685
|
Args:
|
|
695
686
|
message_text: The message content to display (str, Text, or PromptMessageExtended)
|
|
696
687
|
bottom_items: Optional list of items for bottom separator (e.g., servers, destinations)
|
|
697
|
-
|
|
688
|
+
highlight_index: Index of item to highlight in the bottom separator (0-based), or None
|
|
698
689
|
max_item_length: Optional max length for bottom items (with ellipsis)
|
|
699
690
|
title: Title for the message (default "ASSISTANT")
|
|
700
691
|
name: Optional agent name
|
|
@@ -722,7 +713,7 @@ class ConsoleDisplay:
|
|
|
722
713
|
name=name,
|
|
723
714
|
right_info=right_info,
|
|
724
715
|
bottom_metadata=bottom_items,
|
|
725
|
-
|
|
716
|
+
highlight_index=highlight_index,
|
|
726
717
|
max_item_length=max_item_length,
|
|
727
718
|
truncate_content=False, # Assistant messages shouldn't be truncated
|
|
728
719
|
additional_message=additional_message,
|
|
@@ -816,6 +807,32 @@ class ConsoleDisplay:
|
|
|
816
807
|
truncate_content=False, # User messages typically shouldn't be truncated
|
|
817
808
|
)
|
|
818
809
|
|
|
810
|
+
def show_system_message(
|
|
811
|
+
self,
|
|
812
|
+
system_prompt: str,
|
|
813
|
+
agent_name: str | None = None,
|
|
814
|
+
server_count: int = 0,
|
|
815
|
+
) -> None:
|
|
816
|
+
"""Display the system prompt in a formatted panel."""
|
|
817
|
+
if not self.config or not self.config.logger.show_chat:
|
|
818
|
+
return
|
|
819
|
+
|
|
820
|
+
# Build right side info
|
|
821
|
+
right_parts = []
|
|
822
|
+
if server_count > 0:
|
|
823
|
+
server_word = "server" if server_count == 1 else "servers"
|
|
824
|
+
right_parts.append(f"{server_count} MCP {server_word}")
|
|
825
|
+
|
|
826
|
+
right_info = f"[dim]{' '.join(right_parts)}[/dim]" if right_parts else ""
|
|
827
|
+
|
|
828
|
+
self.display_message(
|
|
829
|
+
content=system_prompt,
|
|
830
|
+
message_type=MessageType.SYSTEM,
|
|
831
|
+
name=agent_name,
|
|
832
|
+
right_info=right_info,
|
|
833
|
+
truncate_content=False, # Don't truncate system prompts
|
|
834
|
+
)
|
|
835
|
+
|
|
819
836
|
async def show_prompt_loaded(
|
|
820
837
|
self,
|
|
821
838
|
prompt_name: str,
|
fast_agent/ui/enhanced_prompt.py
CHANGED
|
@@ -297,6 +297,7 @@ class AgentCompleter(Completer):
|
|
|
297
297
|
"tools": "List available MCP tools",
|
|
298
298
|
"prompt": "List and choose MCP prompts, or apply specific prompt (/prompt <name>)",
|
|
299
299
|
"agents": "List available agents",
|
|
300
|
+
"system": "Show the current system prompt",
|
|
300
301
|
"usage": "Show current usage statistics",
|
|
301
302
|
"markdown": "Show last assistant message without markdown formatting",
|
|
302
303
|
"save_history": "Save history; .json = MCP JSON, others = Markdown",
|
|
@@ -751,6 +752,8 @@ async def get_enhanced_input(
|
|
|
751
752
|
return "CLEAR"
|
|
752
753
|
elif cmd == "agents":
|
|
753
754
|
return "LIST_AGENTS"
|
|
755
|
+
elif cmd == "system":
|
|
756
|
+
return "SHOW_SYSTEM"
|
|
754
757
|
elif cmd == "usage":
|
|
755
758
|
return "SHOW_USAGE"
|
|
756
759
|
elif cmd == "markdown":
|
|
@@ -933,6 +936,7 @@ async def handle_special_commands(command, agent_app=None):
|
|
|
933
936
|
rich_print(" /help - Show this help")
|
|
934
937
|
rich_print(" /clear - Clear screen")
|
|
935
938
|
rich_print(" /agents - List available agents")
|
|
939
|
+
rich_print(" /system - Show the current system prompt")
|
|
936
940
|
rich_print(" /prompt <name> - Apply a specific prompt by name")
|
|
937
941
|
rich_print(" /usage - Show current usage statistics")
|
|
938
942
|
rich_print(" /markdown - Show last assistant message without markdown formatting")
|
|
@@ -972,6 +976,10 @@ async def handle_special_commands(command, agent_app=None):
|
|
|
972
976
|
# Return a dictionary to signal that usage should be shown
|
|
973
977
|
return {"show_usage": True}
|
|
974
978
|
|
|
979
|
+
elif command == "SHOW_SYSTEM":
|
|
980
|
+
# Return a dictionary to signal that system prompt should be shown
|
|
981
|
+
return {"show_system": True}
|
|
982
|
+
|
|
975
983
|
elif command == "MARKDOWN":
|
|
976
984
|
# Return a dictionary to signal that markdown display should be shown
|
|
977
985
|
return {"show_markdown": True}
|
|
@@ -197,6 +197,10 @@ class InteractivePrompt:
|
|
|
197
197
|
# Handle usage display
|
|
198
198
|
await self._show_usage(prompt_provider, agent)
|
|
199
199
|
continue
|
|
200
|
+
elif "show_system" in command_result:
|
|
201
|
+
# Handle system prompt display
|
|
202
|
+
await self._show_system(prompt_provider, agent)
|
|
203
|
+
continue
|
|
200
204
|
elif "show_markdown" in command_result:
|
|
201
205
|
# Handle markdown display
|
|
202
206
|
await self._show_markdown(prompt_provider, agent)
|
|
@@ -926,6 +930,56 @@ class InteractivePrompt:
|
|
|
926
930
|
except Exception as e:
|
|
927
931
|
rich_print(f"[red]Error showing usage: {e}[/red]")
|
|
928
932
|
|
|
933
|
+
async def _show_system(self, prompt_provider: PromptProvider, agent_name: str) -> None:
|
|
934
|
+
"""
|
|
935
|
+
Show the current system prompt for the agent.
|
|
936
|
+
|
|
937
|
+
Args:
|
|
938
|
+
prompt_provider: Provider that has access to agents
|
|
939
|
+
agent_name: Name of the current agent
|
|
940
|
+
"""
|
|
941
|
+
try:
|
|
942
|
+
# Get agent to display from
|
|
943
|
+
assert hasattr(prompt_provider, "_agent"), (
|
|
944
|
+
"Interactive prompt expects an AgentApp with _agent()"
|
|
945
|
+
)
|
|
946
|
+
agent = prompt_provider._agent(agent_name)
|
|
947
|
+
|
|
948
|
+
# Get the system prompt
|
|
949
|
+
system_prompt = getattr(agent, 'instruction', None)
|
|
950
|
+
if not system_prompt:
|
|
951
|
+
rich_print("[yellow]No system prompt available[/yellow]")
|
|
952
|
+
return
|
|
953
|
+
|
|
954
|
+
# Get server count for display
|
|
955
|
+
server_count = 0
|
|
956
|
+
if hasattr(agent, "_aggregator") and hasattr(agent._aggregator, "server_names"):
|
|
957
|
+
server_count = (
|
|
958
|
+
len(agent._aggregator.server_names) if agent._aggregator.server_names else 0
|
|
959
|
+
)
|
|
960
|
+
|
|
961
|
+
# Use the display utility to show the system prompt
|
|
962
|
+
if hasattr(agent, 'display') and agent.display:
|
|
963
|
+
agent.display.show_system_message(
|
|
964
|
+
system_prompt=system_prompt,
|
|
965
|
+
agent_name=agent_name,
|
|
966
|
+
server_count=server_count
|
|
967
|
+
)
|
|
968
|
+
else:
|
|
969
|
+
# Fallback to basic display
|
|
970
|
+
from fast_agent.ui.console_display import ConsoleDisplay
|
|
971
|
+
display = ConsoleDisplay(config=agent.context.config if hasattr(agent, 'context') else None)
|
|
972
|
+
display.show_system_message(
|
|
973
|
+
system_prompt=system_prompt,
|
|
974
|
+
agent_name=agent_name,
|
|
975
|
+
server_count=server_count
|
|
976
|
+
)
|
|
977
|
+
|
|
978
|
+
except Exception as e:
|
|
979
|
+
import traceback
|
|
980
|
+
rich_print(f"[red]Error showing system prompt: {e}[/red]")
|
|
981
|
+
rich_print(f"[dim]{traceback.format_exc()}[/dim]")
|
|
982
|
+
|
|
929
983
|
async def _show_markdown(self, prompt_provider: PromptProvider, agent_name: str) -> None:
|
|
930
984
|
"""
|
|
931
985
|
Show the last assistant message without markdown formatting.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fast-agent-mcp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.6
|
|
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,7 +208,7 @@ 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.5
|
|
212
212
|
Requires-Dist: a2a-sdk>=0.3.0
|
|
213
213
|
Requires-Dist: aiohttp>=3.11.13
|
|
214
214
|
Requires-Dist: anthropic>=0.66.0
|
|
@@ -218,6 +218,7 @@ Requires-Dist: deprecated>=1.2.18
|
|
|
218
218
|
Requires-Dist: email-validator>=2.2.0
|
|
219
219
|
Requires-Dist: fastapi>=0.115.6
|
|
220
220
|
Requires-Dist: google-genai>=1.33.0
|
|
221
|
+
Requires-Dist: keyring>=24.3.1
|
|
221
222
|
Requires-Dist: mcp==1.14.0
|
|
222
223
|
Requires-Dist: openai>=1.106.1
|
|
223
224
|
Requires-Dist: opentelemetry-distro>=0.55b0
|
|
@@ -380,6 +381,42 @@ uv run workflow/chaining.py --agent post_writer --message "<url>"
|
|
|
380
381
|
|
|
381
382
|
Add the `--quiet` switch to disable progress and message display and return only the final response - useful for simple automations.
|
|
382
383
|
|
|
384
|
+
## MCP OAuth (v2.1)
|
|
385
|
+
|
|
386
|
+
For SSE and HTTP MCP servers, OAuth is enabled by default with minimal configuration. A local callback server is used to capture the authorization code, with a paste-URL fallback if the port is unavailable.
|
|
387
|
+
|
|
388
|
+
- Minimal per-server settings in `fastagent.config.yaml`:
|
|
389
|
+
|
|
390
|
+
```yaml
|
|
391
|
+
mcp:
|
|
392
|
+
servers:
|
|
393
|
+
myserver:
|
|
394
|
+
transport: http # or sse
|
|
395
|
+
url: http://localhost:8001/mcp # or /sse for SSE servers
|
|
396
|
+
auth:
|
|
397
|
+
oauth: true # default: true
|
|
398
|
+
redirect_port: 3030 # default: 3030
|
|
399
|
+
redirect_path: /callback # default: /callback
|
|
400
|
+
# scope: "user" # optional; if omitted, server defaults are used
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
- The OAuth client uses PKCE and in-memory token storage (no tokens written to disk).
|
|
404
|
+
- Token persistence: by default, tokens are stored securely in your OS keychain via `keyring`. If a keychain is unavailable (e.g., headless container), in-memory storage is used for the session.
|
|
405
|
+
- To force in-memory only per server, set:
|
|
406
|
+
|
|
407
|
+
```yaml
|
|
408
|
+
mcp:
|
|
409
|
+
servers:
|
|
410
|
+
myserver:
|
|
411
|
+
transport: http
|
|
412
|
+
url: http://localhost:8001/mcp
|
|
413
|
+
auth:
|
|
414
|
+
oauth: true
|
|
415
|
+
persist: memory
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
- To disable OAuth for a specific server , set `auth.oauth: false` for that server.
|
|
419
|
+
|
|
383
420
|
## Workflows
|
|
384
421
|
|
|
385
422
|
### Chain
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
fast_agent/__init__.py,sha256=zPSMngBIvbBYyu3jxZp-edxfOBWxCX7YlceMdlqvt9I,3795
|
|
2
|
-
fast_agent/config.py,sha256=
|
|
2
|
+
fast_agent/config.py,sha256=5glgvbPcPZFGG6UG_P8hByryPrteqrYg4pUCep4x6s8,22509
|
|
3
3
|
fast_agent/constants.py,sha256=d5EMSO2msRkjRFz8MgnnhpMnO3woqKP0EcQ4b_yI60w,235
|
|
4
4
|
fast_agent/context.py,sha256=nBelOqehSH91z3aG2nYhwETP-biRzz-iuA2fqmKdHP8,7700
|
|
5
5
|
fast_agent/context_dependent.py,sha256=KU1eydVBoIt4bYOZroqxDgE1AUexDaZi7hurE26QsF4,1584
|
|
@@ -9,27 +9,28 @@ fast_agent/mcp_server_registry.py,sha256=TDCNpQIehsh1PK4y7AWp_rkQMcwYx7FaouUbK3k
|
|
|
9
9
|
fast_agent/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
fast_agent/agents/__init__.py,sha256=WfgtR9MgmJUJI7rb-CUH_10s7308LjxYIYzJRIBZ_9Y,2644
|
|
11
11
|
fast_agent/agents/agent_types.py,sha256=ugolD3lC2KxSfBYjjRf9HjNATZaFx1o4Fhjb15huSgk,1776
|
|
12
|
-
fast_agent/agents/llm_agent.py,sha256=
|
|
12
|
+
fast_agent/agents/llm_agent.py,sha256=deb6cOLKzebW3mZJ3uyingwIFIwVbTpVVvTV2HGel9g,8884
|
|
13
13
|
fast_agent/agents/llm_decorator.py,sha256=IhvMOZVjo1qT4GII0KP000VYTCprzBQBGZPbZwBIEd0,16485
|
|
14
|
-
fast_agent/agents/mcp_agent.py,sha256=
|
|
15
|
-
fast_agent/agents/tool_agent.py,sha256=
|
|
14
|
+
fast_agent/agents/mcp_agent.py,sha256=Zr3XxhUKxcGMSiawgQHLpajJtsc2CJYKUe9IUzNmYkQ,38115
|
|
15
|
+
fast_agent/agents/tool_agent.py,sha256=HAqNCftDlzjDuQGJjvsR4ZEmDX4aLG6YoaJ9ZGfXCBs,7082
|
|
16
16
|
fast_agent/agents/workflow/chain_agent.py,sha256=Pd8dOH_YdKu3LXsKa4fwqzY_B2qVuhzdfCUiKi5v17s,6293
|
|
17
17
|
fast_agent/agents/workflow/evaluator_optimizer.py,sha256=rhzazy8Aj-ydId6kmBC77TmtYZ5mirSe7eV6PPMWkBA,12040
|
|
18
18
|
fast_agent/agents/workflow/iterative_planner.py,sha256=CTtDpK-YGrFFZMQQmFeE-2I_9-cZv23pNwUoh8w5voA,20478
|
|
19
19
|
fast_agent/agents/workflow/orchestrator_models.py,sha256=VNnnVegnjimgiuL8ZhxkBPhg8tjbeJRGq2JAIl0FAbU,7216
|
|
20
20
|
fast_agent/agents/workflow/orchestrator_prompts.py,sha256=EXKEI174sshkZyPPEnWbwwNafzSPuA39MXL7iqG9cWc,9106
|
|
21
21
|
fast_agent/agents/workflow/parallel_agent.py,sha256=DlJXDURAfx-WBF297tKBLfH93gDFSAPUyEmJr7QNGyw,7476
|
|
22
|
-
fast_agent/agents/workflow/router_agent.py,sha256=
|
|
22
|
+
fast_agent/agents/workflow/router_agent.py,sha256=4jL7AM9FcOvsuf0BSWs-r17xa9vMml0BuF89PiFeVQs,11345
|
|
23
23
|
fast_agent/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
fast_agent/cli/__main__.py,sha256=
|
|
25
|
-
fast_agent/cli/constants.py,sha256=
|
|
26
|
-
fast_agent/cli/main.py,sha256=
|
|
24
|
+
fast_agent/cli/__main__.py,sha256=iF9mNX1ja9Ea9T6gzNg9nfYAuei_vRowfHpUPiFbJVI,1260
|
|
25
|
+
fast_agent/cli/constants.py,sha256=flYDsml3_8wVcGg7T1t5mPFT9CC1M-XMjBigXjX6PuI,559
|
|
26
|
+
fast_agent/cli/main.py,sha256=tERbfQjure3kgKYqzZCNDSLyiVZGXCH2coZ8YBwvq64,4398
|
|
27
27
|
fast_agent/cli/terminal.py,sha256=tDN1fJ91Nc_wZJTNafkQuD7Z7gFscvo1PHh-t7Wl-5s,1066
|
|
28
|
-
fast_agent/cli/commands/
|
|
29
|
-
fast_agent/cli/commands/
|
|
30
|
-
fast_agent/cli/commands/
|
|
31
|
-
fast_agent/cli/commands/
|
|
32
|
-
fast_agent/cli/commands/
|
|
28
|
+
fast_agent/cli/commands/auth.py,sha256=JlRT1iHDgF0fPmkbaoiLTm2cTO-qI9KZtrO3wppIVcg,14639
|
|
29
|
+
fast_agent/cli/commands/check_config.py,sha256=D0emHGl6yc9XRq-HjAwS4KfS7a9r5gkA55MyiIRptGQ,26638
|
|
30
|
+
fast_agent/cli/commands/go.py,sha256=yI-VAc2FVm5S5kCP_-i4cVCkwprz0zt_l6KyBam6V7U,15178
|
|
31
|
+
fast_agent/cli/commands/quickstart.py,sha256=CiSen7VxmKDy7apJZ8rAyC33-BIo0zsUt8cBnEtxg0Y,21241
|
|
32
|
+
fast_agent/cli/commands/server_helpers.py,sha256=Nuded8sZb4Rybwoq5LbXXUgwtJZg-OO04xhmPUp6e98,4073
|
|
33
|
+
fast_agent/cli/commands/setup.py,sha256=n5hVjXkKTmuiW8-0ezItVcMHJ92W6NlE2JOGCYiKw0A,6388
|
|
33
34
|
fast_agent/cli/commands/url_parser.py,sha256=v9KoprPBEEST5Fo7qXgbW50GC5vMpxFteKqAT6mFkdI,5991
|
|
34
35
|
fast_agent/core/__init__.py,sha256=n2ly7SBtFko9H2DPVh8cSqfw9chtiUaokxLmiDpaMyU,2233
|
|
35
36
|
fast_agent/core/agent_app.py,sha256=cdzNwpb--SUNYbhkUX6RolqVnxJ5WSchxw5I4gFrvpk,16836
|
|
@@ -103,10 +104,11 @@ fast_agent/mcp/hf_auth.py,sha256=ndDvR7E9LCc5dBiMsStFXtvvX9lYrL-edCq_qJw4lDw,447
|
|
|
103
104
|
fast_agent/mcp/interfaces.py,sha256=xCWONGXe4uQSmmBlMZRD3mflPegTJnz2caVNihEl3ok,2411
|
|
104
105
|
fast_agent/mcp/logger_textio.py,sha256=4YLVXlXghdGm1s_qp1VoAWEX_eWufBfD2iD7l08yoak,3170
|
|
105
106
|
fast_agent/mcp/mcp_agent_client_session.py,sha256=XRCliiYMxbCbkqS2VSrw7tAtnkLIP9HSRpSWaXW02MQ,13663
|
|
106
|
-
fast_agent/mcp/mcp_aggregator.py,sha256=
|
|
107
|
-
fast_agent/mcp/mcp_connection_manager.py,sha256=
|
|
107
|
+
fast_agent/mcp/mcp_aggregator.py,sha256=rrFzPV3keHJkc04Y_6x4S0ZNmhjwdp6jfE0dflHGpXY,54655
|
|
108
|
+
fast_agent/mcp/mcp_connection_manager.py,sha256=uhQqbOP2_LHDMEgrh1-yvGpueloYVbylvAj-pjYCboA,20247
|
|
108
109
|
fast_agent/mcp/mcp_content.py,sha256=F9bgJ57EO9sgWg1m-eTNM6xd9js79mHKf4e9O8K8jrI,8829
|
|
109
110
|
fast_agent/mcp/mime_utils.py,sha256=D6YXNdZJ351BjacSW5o0sVF_hrWuRHD6UyWS4TDlLZI,2915
|
|
111
|
+
fast_agent/mcp/oauth_client.py,sha256=3shN3iwsJNXrk7nbcfUgrzNos3i2RuMuLXA80nR8r6Y,17104
|
|
110
112
|
fast_agent/mcp/prompt.py,sha256=U3jAIjGyGqCpS96zKf0idC7PI4YdFHq-3qjpCsEybxQ,5983
|
|
111
113
|
fast_agent/mcp/prompt_message_extended.py,sha256=-sw6FITvN0rTeIVWDUslNTPYyFEieToydOAf1-phQLs,4650
|
|
112
114
|
fast_agent/mcp/prompt_render.py,sha256=AqDaQqM6kqciV9X79S5rsRr3VjcQ_2JOiLaHqpRzsS4,2888
|
|
@@ -176,28 +178,28 @@ fast_agent/resources/examples/workflows/parallel.py,sha256=kROiRueTm0Wql4EWVjFSy
|
|
|
176
178
|
fast_agent/resources/examples/workflows/router.py,sha256=lxMxz6g0_XjYnwzEwKdl9l2hxRsD4PSsaIlhH5nLuQY,2075
|
|
177
179
|
fast_agent/resources/examples/workflows/short_story.md,sha256=XN9I2kzCcMmke3dE5F2lyRH5iFUZUQ8Sy-hS3rm_Wlc,1153
|
|
178
180
|
fast_agent/resources/examples/workflows/short_story.txt,sha256=X3y_1AyhLFN2AKzCKvucJtDgAFIJfnlbsbGZO5bBWu0,1187
|
|
179
|
-
fast_agent/resources/setup/.gitignore,sha256=
|
|
180
|
-
fast_agent/resources/setup/agent.py,sha256=
|
|
181
|
-
fast_agent/resources/setup/fastagent.config.yaml,sha256=
|
|
181
|
+
fast_agent/resources/setup/.gitignore,sha256=bksf0bkvBXtm3F5Nd4F9FB2LaO2RcTbHujYWjq5JKPo,305
|
|
182
|
+
fast_agent/resources/setup/agent.py,sha256=IlZecsc9vTtH2rj9BFF4M6BUgClg5fQ2HasYV1PPIHA,518
|
|
183
|
+
fast_agent/resources/setup/fastagent.config.yaml,sha256=GoXfrLXolMjl9oqam5lodzm40OmZDOkng99BSSP26pY,1446
|
|
182
184
|
fast_agent/resources/setup/fastagent.secrets.yaml.example,sha256=ht-i2_SpAyeXG2OnG_vOA1n7gRsGIInxp9g5Nio-jpI,1038
|
|
183
|
-
fast_agent/resources/setup/pyproject.toml.tmpl,sha256=
|
|
185
|
+
fast_agent/resources/setup/pyproject.toml.tmpl,sha256=SxyVPXbtD67yFOx9wIrzq6Yxo4W2PkSR1rrnPkmpjwA,478
|
|
184
186
|
fast_agent/tools/elicitation.py,sha256=8FaNvuN__LAM328VSJ5T4Bg3m8auHraqYvIYv6Eh4KU,13464
|
|
185
187
|
fast_agent/types/__init__.py,sha256=IpUWlzx3u_3h99F2IKJ8aPjyGZXguOwkOVJKGrst6hg,951
|
|
186
188
|
fast_agent/types/llm_stop_reason.py,sha256=bWe97OfhALUe8uQeAQOnTdPlYzJiabIfo8u38kPgj3Q,2293
|
|
187
189
|
fast_agent/ui/__init__.py,sha256=MXxTQjFdF7mI_3JHxBPd-aoZYLlxV_-51-Trqgv5-3w,1104
|
|
188
190
|
fast_agent/ui/console.py,sha256=Gjf2QLFumwG1Lav__c07X_kZxxEUSkzV-1_-YbAwcwo,813
|
|
189
|
-
fast_agent/ui/console_display.py,sha256=
|
|
191
|
+
fast_agent/ui/console_display.py,sha256=gzSehwK-6b5Y1amflnhocTWtuRtIjoS990qChR6O8oA,40922
|
|
190
192
|
fast_agent/ui/elicitation_form.py,sha256=t3UhBG44YmxTLu1RjCnHwW36eQQaroE45CiBGJB2czg,29410
|
|
191
193
|
fast_agent/ui/elicitation_style.py,sha256=rtZiJH4CwTdkDLSzDDvThlZyIyuRX0oVNzscKiHvry8,3835
|
|
192
|
-
fast_agent/ui/enhanced_prompt.py,sha256=
|
|
193
|
-
fast_agent/ui/interactive_prompt.py,sha256=
|
|
194
|
+
fast_agent/ui/enhanced_prompt.py,sha256=a7XYq8sef7PoIBW0o40ihzumTENp1nr2jFsG8s2R6D4,40427
|
|
195
|
+
fast_agent/ui/interactive_prompt.py,sha256=ZW-bCFtsJoD8InWHgJ2ibTK9OjhaA-39-RYIocDV9XY,45516
|
|
194
196
|
fast_agent/ui/mcp_ui_utils.py,sha256=hV7z-yHX86BgdH6CMmN5qyOUjyiegQXLJOa5n5A1vQs,8476
|
|
195
197
|
fast_agent/ui/mermaid_utils.py,sha256=MpcRyVCPMTwU1XeIxnyFg0fQLjcyXZduWRF8NhEqvXE,5332
|
|
196
198
|
fast_agent/ui/progress_display.py,sha256=hajDob65PttiJ2mPS6FsCtnmTcnyvDWGn-UqQboXqkQ,361
|
|
197
199
|
fast_agent/ui/rich_progress.py,sha256=jy6VuUOYFkWXdyvnRTSBPAmmNAP6TJDFw_lgbt_YYLo,7548
|
|
198
200
|
fast_agent/ui/usage_display.py,sha256=ltJpn_sDzo8PDNSXWx-QdEUbQWUnhmajCItNt5mA5rM,7285
|
|
199
|
-
fast_agent_mcp-0.3.
|
|
200
|
-
fast_agent_mcp-0.3.
|
|
201
|
-
fast_agent_mcp-0.3.
|
|
202
|
-
fast_agent_mcp-0.3.
|
|
203
|
-
fast_agent_mcp-0.3.
|
|
201
|
+
fast_agent_mcp-0.3.6.dist-info/METADATA,sha256=BqwJzI5karZB_iUusd69TKvh1Rg4Ja813Lb_E6biljM,31696
|
|
202
|
+
fast_agent_mcp-0.3.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
203
|
+
fast_agent_mcp-0.3.6.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
|
|
204
|
+
fast_agent_mcp-0.3.6.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
|
|
205
|
+
fast_agent_mcp-0.3.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|