fast-agent-mcp 0.3.5__py3-none-any.whl → 0.3.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.

Potentially problematic release.


This version of fast-agent-mcp might be problematic. Click here for more details.

Files changed (41) hide show
  1. fast_agent/__init__.py +9 -1
  2. fast_agent/agents/agent_types.py +11 -11
  3. fast_agent/agents/llm_agent.py +76 -40
  4. fast_agent/agents/llm_decorator.py +355 -6
  5. fast_agent/agents/mcp_agent.py +154 -59
  6. fast_agent/agents/tool_agent.py +60 -4
  7. fast_agent/agents/workflow/router_agent.py +10 -2
  8. fast_agent/cli/commands/auth.py +52 -29
  9. fast_agent/cli/commands/check_config.py +26 -5
  10. fast_agent/cli/commands/go.py +11 -5
  11. fast_agent/cli/commands/setup.py +4 -7
  12. fast_agent/config.py +4 -1
  13. fast_agent/constants.py +2 -0
  14. fast_agent/core/agent_app.py +2 -0
  15. fast_agent/core/direct_factory.py +39 -120
  16. fast_agent/core/fastagent.py +2 -2
  17. fast_agent/history/history_exporter.py +3 -3
  18. fast_agent/llm/fastagent_llm.py +3 -3
  19. fast_agent/llm/provider/openai/llm_openai.py +57 -8
  20. fast_agent/mcp/__init__.py +1 -2
  21. fast_agent/mcp/mcp_aggregator.py +34 -1
  22. fast_agent/mcp/mcp_connection_manager.py +23 -4
  23. fast_agent/mcp/oauth_client.py +32 -4
  24. fast_agent/mcp/prompt_message_extended.py +2 -0
  25. fast_agent/mcp/prompt_serialization.py +124 -39
  26. fast_agent/mcp/prompts/prompt_load.py +34 -32
  27. fast_agent/mcp/prompts/prompt_server.py +26 -11
  28. fast_agent/resources/setup/.gitignore +6 -0
  29. fast_agent/resources/setup/agent.py +8 -1
  30. fast_agent/resources/setup/fastagent.config.yaml +2 -2
  31. fast_agent/resources/setup/pyproject.toml.tmpl +6 -0
  32. fast_agent/types/__init__.py +3 -1
  33. fast_agent/ui/console_display.py +48 -31
  34. fast_agent/ui/enhanced_prompt.py +119 -64
  35. fast_agent/ui/interactive_prompt.py +66 -40
  36. fast_agent/ui/rich_progress.py +12 -8
  37. {fast_agent_mcp-0.3.5.dist-info → fast_agent_mcp-0.3.7.dist-info}/METADATA +3 -3
  38. {fast_agent_mcp-0.3.5.dist-info → fast_agent_mcp-0.3.7.dist-info}/RECORD +41 -41
  39. {fast_agent_mcp-0.3.5.dist-info → fast_agent_mcp-0.3.7.dist-info}/WHEEL +0 -0
  40. {fast_agent_mcp-0.3.5.dist-info → fast_agent_mcp-0.3.7.dist-info}/entry_points.txt +0 -0
  41. {fast_agent_mcp-0.3.5.dist-info → fast_agent_mcp-0.3.7.dist-info}/licenses/LICENSE +0 -0
@@ -14,14 +14,16 @@ Usage:
14
14
  )
15
15
  """
16
16
 
17
- from typing import Awaitable, Callable, Dict, List, Mapping, Optional, Protocol, Union
17
+ from typing import TYPE_CHECKING, Awaitable, Callable, Dict, List, Optional, Union
18
+
19
+ if TYPE_CHECKING:
20
+ from fast_agent.core.agent_app import AgentApp
18
21
 
19
22
  from mcp.types import Prompt, PromptMessage
20
23
  from rich import print as rich_print
21
24
 
22
25
  from fast_agent.agents.agent_types import AgentType
23
26
  from fast_agent.history.history_exporter import HistoryExporter
24
- from fast_agent.interfaces import AgentProtocol
25
27
  from fast_agent.mcp.mcp_aggregator import SEP
26
28
  from fast_agent.types import PromptMessageExtended
27
29
  from fast_agent.ui.enhanced_prompt import (
@@ -41,36 +43,6 @@ SendFunc = Callable[[Union[str, PromptMessage, PromptMessageExtended], str], Awa
41
43
  AgentGetter = Callable[[str], Optional[object]]
42
44
 
43
45
 
44
- class PromptProvider(Protocol):
45
- """Protocol for objects that can provide prompt functionality."""
46
-
47
- async def list_prompts(
48
- self, namespace: Optional[str] = None, agent_name: Optional[str] = None
49
- ) -> Mapping[str, List[Prompt]]:
50
- """List available prompts."""
51
- ...
52
-
53
- async def apply_prompt(
54
- self,
55
- prompt_name: str,
56
- prompt_title: Optional[str] = None,
57
- arguments: Optional[Dict[str, str]] = None,
58
- agent_name: Optional[str] = None,
59
- as_template: bool = False,
60
- **kwargs,
61
- ) -> str:
62
- """Apply a prompt."""
63
- ...
64
-
65
- def _agent(self, agent_name: str) -> AgentProtocol:
66
- """Return the concrete agent by name (AgentApp provides this)."""
67
- ...
68
-
69
- def _show_turn_usage(self, agent_name: str) -> None:
70
- """Display usage for a given agent after a turn."""
71
- ...
72
-
73
-
74
46
  class InteractivePrompt:
75
47
  """
76
48
  Provides interactive prompt functionality that works with any agent implementation.
@@ -91,7 +63,7 @@ class InteractivePrompt:
91
63
  send_func: SendFunc,
92
64
  default_agent: str,
93
65
  available_agents: List[str],
94
- prompt_provider: PromptProvider,
66
+ prompt_provider: "AgentApp",
95
67
  default: str = "",
96
68
  ) -> str:
97
69
  """
@@ -101,7 +73,7 @@ class InteractivePrompt:
101
73
  send_func: Function to send messages to agents
102
74
  default_agent: Name of the default agent to use
103
75
  available_agents: List of available agent names
104
- prompt_provider: Optional provider that implements list_prompts and apply_prompt
76
+ prompt_provider: AgentApp instance for accessing agents and prompts
105
77
  default: Default message to use when user presses enter
106
78
 
107
79
  Returns:
@@ -197,6 +169,10 @@ class InteractivePrompt:
197
169
  # Handle usage display
198
170
  await self._show_usage(prompt_provider, agent)
199
171
  continue
172
+ elif "show_system" in command_result:
173
+ # Handle system prompt display
174
+ await self._show_system(prompt_provider, agent)
175
+ continue
200
176
  elif "show_markdown" in command_result:
201
177
  # Handle markdown display
202
178
  await self._show_markdown(prompt_provider, agent)
@@ -286,7 +262,7 @@ class InteractivePrompt:
286
262
  rich_print()
287
263
 
288
264
  async def _get_all_prompts(
289
- self, prompt_provider: PromptProvider, agent_name: Optional[str] = None
265
+ self, prompt_provider: "AgentApp", agent_name: Optional[str] = None
290
266
  ):
291
267
  """
292
268
  Get a list of all available prompts.
@@ -366,7 +342,7 @@ class InteractivePrompt:
366
342
  rich_print(f"[dim]{traceback.format_exc()}[/dim]")
367
343
  return []
368
344
 
369
- async def _list_prompts(self, prompt_provider: PromptProvider, agent_name: str) -> None:
345
+ async def _list_prompts(self, prompt_provider: "AgentApp", agent_name: str) -> None:
370
346
  """
371
347
  List available prompts for an agent.
372
348
 
@@ -470,7 +446,7 @@ class InteractivePrompt:
470
446
 
471
447
  async def _select_prompt(
472
448
  self,
473
- prompt_provider: PromptProvider,
449
+ prompt_provider: "AgentApp",
474
450
  agent_name: str,
475
451
  requested_name: Optional[str] = None,
476
452
  send_func: Optional[SendFunc] = None,
@@ -804,7 +780,7 @@ class InteractivePrompt:
804
780
  rich_print(f"[red]Error selecting or applying prompt: {e}[/red]")
805
781
  rich_print(f"[dim]{traceback.format_exc()}[/dim]")
806
782
 
807
- async def _list_tools(self, prompt_provider: PromptProvider, agent_name: str) -> None:
783
+ async def _list_tools(self, prompt_provider: "AgentApp", agent_name: str) -> None:
808
784
  """
809
785
  List available tools for an agent.
810
786
 
@@ -904,7 +880,7 @@ class InteractivePrompt:
904
880
  rich_print(f"[red]Error listing tools: {e}[/red]")
905
881
  rich_print(f"[dim]{traceback.format_exc()}[/dim]")
906
882
 
907
- async def _show_usage(self, prompt_provider: PromptProvider, agent_name: str) -> None:
883
+ async def _show_usage(self, prompt_provider: "AgentApp", agent_name: str) -> None:
908
884
  """
909
885
  Show usage statistics for the current agent(s) in a colorful table format.
910
886
 
@@ -926,7 +902,57 @@ class InteractivePrompt:
926
902
  except Exception as e:
927
903
  rich_print(f"[red]Error showing usage: {e}[/red]")
928
904
 
929
- async def _show_markdown(self, prompt_provider: PromptProvider, agent_name: str) -> None:
905
+ async def _show_system(self, prompt_provider: "AgentApp", agent_name: str) -> None:
906
+ """
907
+ Show the current system prompt for the agent.
908
+
909
+ Args:
910
+ prompt_provider: Provider that has access to agents
911
+ agent_name: Name of the current agent
912
+ """
913
+ try:
914
+ # Get agent to display from
915
+ assert hasattr(prompt_provider, "_agent"), (
916
+ "Interactive prompt expects an AgentApp with _agent()"
917
+ )
918
+ agent = prompt_provider._agent(agent_name)
919
+
920
+ # Get the system prompt
921
+ system_prompt = getattr(agent, 'instruction', None)
922
+ if not system_prompt:
923
+ rich_print("[yellow]No system prompt available[/yellow]")
924
+ return
925
+
926
+ # Get server count for display
927
+ server_count = 0
928
+ if hasattr(agent, "_aggregator") and hasattr(agent._aggregator, "server_names"):
929
+ server_count = (
930
+ len(agent._aggregator.server_names) if agent._aggregator.server_names else 0
931
+ )
932
+
933
+ # Use the display utility to show the system prompt
934
+ if hasattr(agent, 'display') and agent.display:
935
+ agent.display.show_system_message(
936
+ system_prompt=system_prompt,
937
+ agent_name=agent_name,
938
+ server_count=server_count
939
+ )
940
+ else:
941
+ # Fallback to basic display
942
+ from fast_agent.ui.console_display import ConsoleDisplay
943
+ display = ConsoleDisplay(config=agent.context.config if hasattr(agent, 'context') else None)
944
+ display.show_system_message(
945
+ system_prompt=system_prompt,
946
+ agent_name=agent_name,
947
+ server_count=server_count
948
+ )
949
+
950
+ except Exception as e:
951
+ import traceback
952
+ rich_print(f"[red]Error showing system prompt: {e}[/red]")
953
+ rich_print(f"[dim]{traceback.format_exc()}[/dim]")
954
+
955
+ async def _show_markdown(self, prompt_provider: "AgentApp", agent_name: str) -> None:
930
956
  """
931
957
  Show the last assistant message without markdown formatting.
932
958
 
@@ -98,8 +98,9 @@ class RichProgressDisplay:
98
98
  task_id = self._progress.add_task(
99
99
  "",
100
100
  total=None,
101
- target=f"{event.target or task_name}", # Use task_name as fallback for target
102
- details=f"{event.agent_name or ''}",
101
+ target=event.target or task_name,
102
+ details=event.details or "",
103
+ task_name=task_name,
103
104
  )
104
105
  self._taskmap[task_name] = task_id
105
106
  else:
@@ -136,11 +137,9 @@ class RichProgressDisplay:
136
137
  # Update basic task information
137
138
  update_kwargs: dict[str, object] = {
138
139
  "description": description,
139
- "fields": {
140
- "target": event.target or task_name, # Use task_name as fallback for target
141
- "details": event.details or "",
142
- "task_name": task_name,
143
- },
140
+ "target": event.target or task_name, # Use task_name as fallback for target
141
+ "details": event.details or "",
142
+ "task_name": task_name,
144
143
  }
145
144
 
146
145
  # For TOOL_PROGRESS events, update progress if available
@@ -149,8 +148,9 @@ class RichProgressDisplay:
149
148
  update_kwargs["completed"] = event.progress
150
149
  update_kwargs["total"] = event.total
151
150
  else:
152
- # If no total, just show as indeterminate progress
151
+ # If no total, reset to indeterminate but keep other fields
153
152
  self._progress.reset(task_id)
153
+ # Still need to update after reset to apply the fields
154
154
 
155
155
  self._progress.update(task_id, **update_kwargs)
156
156
 
@@ -165,7 +165,9 @@ class RichProgressDisplay:
165
165
  task_id,
166
166
  completed=100,
167
167
  total=100,
168
+ target=event.target or task_name,
168
169
  details=f" / Elapsed Time {time.strftime('%H:%M:%S', time.gmtime(self._progress.tasks[task_id].elapsed))}",
170
+ task_name=task_name,
169
171
  )
170
172
  for task in self._progress.tasks:
171
173
  if task.id != task_id:
@@ -175,7 +177,9 @@ class RichProgressDisplay:
175
177
  task_id,
176
178
  completed=100,
177
179
  total=100,
180
+ target=event.target or task_name,
178
181
  details=f" / {event.details}",
182
+ task_name=task_name,
179
183
  )
180
184
  for task in self._progress.tasks:
181
185
  if task.id != task_id:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.3.5
3
+ Version: 0.3.7
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
@@ -211,7 +211,7 @@ Classifier: Programming Language :: Python :: 3
211
211
  Requires-Python: >=3.13.5
212
212
  Requires-Dist: a2a-sdk>=0.3.0
213
213
  Requires-Dist: aiohttp>=3.11.13
214
- Requires-Dist: anthropic>=0.66.0
214
+ Requires-Dist: anthropic>=0.68.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
@@ -220,7 +220,7 @@ Requires-Dist: fastapi>=0.115.6
220
220
  Requires-Dist: google-genai>=1.33.0
221
221
  Requires-Dist: keyring>=24.3.1
222
222
  Requires-Dist: mcp==1.14.0
223
- Requires-Dist: openai>=1.106.1
223
+ Requires-Dist: openai>=1.108.0
224
224
  Requires-Dist: opentelemetry-distro>=0.55b0
225
225
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
226
226
  Requires-Dist: opentelemetry-instrumentation-anthropic>=0.43.1; python_version >= '3.10' and python_version < '4.0'
@@ -1,6 +1,6 @@
1
- fast_agent/__init__.py,sha256=zPSMngBIvbBYyu3jxZp-edxfOBWxCX7YlceMdlqvt9I,3795
2
- fast_agent/config.py,sha256=f_43QrqB83-Q4ltkGUSiHLyiDcyzWAI9bhLx2Ocxn5E,22367
3
- fast_agent/constants.py,sha256=d5EMSO2msRkjRFz8MgnnhpMnO3woqKP0EcQ4b_yI60w,235
1
+ fast_agent/__init__.py,sha256=ns6CPmjOL5y7cyV4XgFTfMGcfLnuBJwVTbcjJ5Co3x4,4152
2
+ fast_agent/config.py,sha256=5glgvbPcPZFGG6UG_P8hByryPrteqrYg4pUCep4x6s8,22509
3
+ fast_agent/constants.py,sha256=IoXL5m4L0iLlcRrKerMaK3ZPcS6KCJgK8b_bj1BAR60,345
4
4
  fast_agent/context.py,sha256=nBelOqehSH91z3aG2nYhwETP-biRzz-iuA2fqmKdHP8,7700
5
5
  fast_agent/context_dependent.py,sha256=KU1eydVBoIt4bYOZroqxDgE1AUexDaZi7hurE26QsF4,1584
6
6
  fast_agent/event_progress.py,sha256=OETeh-4jJGyxvvPAlVTzW4JsCbFUmOTo-ti0ROgtG5M,1999
@@ -8,38 +8,38 @@ fast_agent/interfaces.py,sha256=R2C1TzNxAO8Qxaam5oHthfhHRNKoP78FtKSV6vPy_Gk,6251
8
8
  fast_agent/mcp_server_registry.py,sha256=TDCNpQIehsh1PK4y7AWp_rkQMcwYx7FaouUbK3kWNZo,2635
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
- 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=IhvMOZVjo1qT4GII0KP000VYTCprzBQBGZPbZwBIEd0,16485
14
- fast_agent/agents/mcp_agent.py,sha256=BMSTcGd9_SdoyEGNGVAWXu8ubaE1TAeAMl-2c_wymQU,35240
15
- fast_agent/agents/tool_agent.py,sha256=owGcc1an9P8jb8ZfNYjCsLK6lv85IL7friWcSbZxMIo,6717
11
+ fast_agent/agents/agent_types.py,sha256=xAFEFWIvOtSnTNDcqqfaAnBx_lFLhnS2_b4hm9xKMo8,1719
12
+ fast_agent/agents/llm_agent.py,sha256=-z2CRz-fcfDOruMQh893WfAZHA5uHgA5VghjjPQui1g,9375
13
+ fast_agent/agents/llm_decorator.py,sha256=gecRmyAXbdgVg6MtBQJQWyGfPoajF4ThDvo0kNhnkK8,29548
14
+ fast_agent/agents/mcp_agent.py,sha256=fyIzcQqXqwCbdW336Hh0LfiGcoND1YWVQUYhVf7_bdM,39059
15
+ fast_agent/agents/tool_agent.py,sha256=UMgNi56XTecP-qnpcIJLzfJ4SFTCTIjz9K49azz8M94,8869
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=KWLOZMFI4YPn0fqzR001qLFbOe7DYxx-E2c0BgIgO-g,11081
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
24
  fast_agent/cli/__main__.py,sha256=iF9mNX1ja9Ea9T6gzNg9nfYAuei_vRowfHpUPiFbJVI,1260
25
25
  fast_agent/cli/constants.py,sha256=flYDsml3_8wVcGg7T1t5mPFT9CC1M-XMjBigXjX6PuI,559
26
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/auth.py,sha256=qLCuXt27i3v3KVLRCAsy1iK9KnU05nJjpsQOXDaoSrA,13547
29
- fast_agent/cli/commands/check_config.py,sha256=23HahZ9ANyi1wtSN9Fp1ACHhpcAhjxIiSIT1bhwHYPQ,25628
30
- fast_agent/cli/commands/go.py,sha256=o9fT8161dDtLP2F0gWrndzitlPO7q7zvdeRoqs0PavE,15079
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=mZJv1jXO9xqVUzuDCO5iWKI8ubBUACHO6i3lZwu5NFU,15148
31
31
  fast_agent/cli/commands/quickstart.py,sha256=CiSen7VxmKDy7apJZ8rAyC33-BIo0zsUt8cBnEtxg0Y,21241
32
32
  fast_agent/cli/commands/server_helpers.py,sha256=Nuded8sZb4Rybwoq5LbXXUgwtJZg-OO04xhmPUp6e98,4073
33
- fast_agent/cli/commands/setup.py,sha256=SEp2omVBNJcfueqqr_ru-ulewepJZ-vjO2mHf7tVqJg,6410
33
+ fast_agent/cli/commands/setup.py,sha256=n5hVjXkKTmuiW8-0ezItVcMHJ92W6NlE2JOGCYiKw0A,6388
34
34
  fast_agent/cli/commands/url_parser.py,sha256=v9KoprPBEEST5Fo7qXgbW50GC5vMpxFteKqAT6mFkdI,5991
35
35
  fast_agent/core/__init__.py,sha256=n2ly7SBtFko9H2DPVh8cSqfw9chtiUaokxLmiDpaMyU,2233
36
- fast_agent/core/agent_app.py,sha256=cdzNwpb--SUNYbhkUX6RolqVnxJ5WSchxw5I4gFrvpk,16836
36
+ fast_agent/core/agent_app.py,sha256=sUGrG7djpVfZXHrzZKulmY6zodiN8JXtZoew_syThuI,16917
37
37
  fast_agent/core/core_app.py,sha256=_8Di00HD2BzWhCAaopAUS0Hzc7pg0249QUUfPuLZ36A,4266
38
38
  fast_agent/core/direct_decorators.py,sha256=0U4_qJl7pdom9mjQ5qwCeb0zBwc5hj-lKFF6zXs62sI,22621
39
- fast_agent/core/direct_factory.py,sha256=UiylXm5wkGZ9MOn1Fsj4-mB5r3UBFt4fD2Ol3R6jgBk,21340
39
+ fast_agent/core/direct_factory.py,sha256=fbii3dcmwYJmYh-SKqigKFiSjVfHM5jMOIpHOpbgZoQ,17860
40
40
  fast_agent/core/error_handling.py,sha256=tZkO8LnXO-qf6jD8a12Pv5fD4NhnN1Ag5_tJ6DwbXjg,631
41
41
  fast_agent/core/exceptions.py,sha256=ENAD_qGG67foxy6vDkIvc-lgopIUQy6O7zvNPpPXaQg,2289
42
- fast_agent/core/fastagent.py,sha256=5f9jOteVVV7BzX3b_BsUSo_kdciVukVKw567uu-u3qE,30848
42
+ fast_agent/core/fastagent.py,sha256=0Kvd5rHqVRdkBPdDZQWnV3KzrqGDzDz0_BBRTddCWzE,30828
43
43
  fast_agent/core/prompt.py,sha256=qNUFlK3KtU7leYysYUglzBYQnEYiXu__iR_T8189zc0,203
44
44
  fast_agent/core/validation.py,sha256=GZ0hUTxkr5KMY1wr6_ifDy91Ycvcx384gZEMOwdie9w,12681
45
45
  fast_agent/core/executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -52,7 +52,7 @@ fast_agent/core/logging/json_serializer.py,sha256=kQDkwTHIkHSQgbhDOJhMoetNvfJVMZ
52
52
  fast_agent/core/logging/listeners.py,sha256=dubbGJoieryyhXN-JF-GrjkW-dgMq93bElM-NBkwA_Q,9366
53
53
  fast_agent/core/logging/logger.py,sha256=L-hLfUGFCIABoNYDiUkNHWvFxL6j-6zn5Pc5E7aC44M,11074
54
54
  fast_agent/core/logging/transport.py,sha256=i_WYXk5mqyfetT72bCYrbdrMWcuL1HJCyeQKfQg7U2w,16994
55
- fast_agent/history/history_exporter.py,sha256=Ab5Z85LhwjjOfXkc7aJVpQJUMGNYr7MpR4qtKHTrXuA,1427
55
+ fast_agent/history/history_exporter.py,sha256=oqkw7qC5rrW73u20tkIqt8yBWPoVzCTC61x2Q2rOKGs,1404
56
56
  fast_agent/human_input/__init__.py,sha256=4Jr_0JLJwdQ3iEUNd6Api9InldtnRMDv_WeZq_WEHpA,935
57
57
  fast_agent/human_input/elicitation_handler.py,sha256=U6278SJLIu1tosyL6qvo5OVwMSVE03gpGlWoF8YDlvQ,3985
58
58
  fast_agent/human_input/elicitation_state.py,sha256=L_vSTpw1-TSDumRYa89Me-twWRbUL2w7GNVhVJmn3KE,1152
@@ -60,7 +60,7 @@ fast_agent/human_input/form_fields.py,sha256=aE7HdR-wOPO_6HllNaJXtn3BzpPsC4TctUA
60
60
  fast_agent/human_input/simple_form.py,sha256=_flUll9z93VPjKqLS7gvz4L1_YJ3-KNx8_ZpUaaxhoQ,3508
61
61
  fast_agent/human_input/types.py,sha256=3Zz89yIt8SuDAVAaRy-r4Vw0-M6AWahwbqQ0yOcoe20,954
62
62
  fast_agent/llm/__init__.py,sha256=MCsrkfnTQXYvn0SofJ-JFmp1l1jX_eidgvegbWbgpsw,184
63
- fast_agent/llm/fastagent_llm.py,sha256=CqlvvT2w3WkmNsJHH-VUAYh7FtmQIj3TRJAeB6yb3MI,24200
63
+ fast_agent/llm/fastagent_llm.py,sha256=LvaGB3cwdnYBxNfPgC6hq-QcLV7dY2yEU97DpifYmik,24177
64
64
  fast_agent/llm/memory.py,sha256=POFoBVMHK0wX4oLd3Gz-6Ru3uC4kTCvAqsVQ77e7KJA,8551
65
65
  fast_agent/llm/model_database.py,sha256=CXpAncjfFGmzjVyvAaKE5QuvDoLwMWXqUHngv_4oDl8,12609
66
66
  fast_agent/llm/model_factory.py,sha256=0quhsqz816GxEM_vuRaJ4n6U8C3lp5KxtIphxepIXVI,12862
@@ -88,14 +88,14 @@ fast_agent/llm/provider/openai/llm_deepseek.py,sha256=aAMX7pd1qDfl54Z9pLvJTVYETc
88
88
  fast_agent/llm/provider/openai/llm_generic.py,sha256=O_mmu3o9LeAZ6Kp405I-GfwrS8AuVkyX3tT6aCDCfLY,1168
89
89
  fast_agent/llm/provider/openai/llm_google_oai.py,sha256=u1yZVeDds9z2hvydz_kUpFe2RANTNwEtlPgB-OEmgrY,1095
90
90
  fast_agent/llm/provider/openai/llm_groq.py,sha256=trNSy3T94_fJWAhVn51iESP_J7sQh_23ufVegKKNHBs,5247
91
- fast_agent/llm/provider/openai/llm_openai.py,sha256=I4qcAjqUsMDRJtNdSmol57XYar8rj0mqV3VRtkOCZ_8,22681
91
+ fast_agent/llm/provider/openai/llm_openai.py,sha256=tESYY9djYp3OJi89sbNv1Fw1NlviSP80rJ5yKxUyvys,24843
92
92
  fast_agent/llm/provider/openai/llm_openrouter.py,sha256=RBTUkNBRqE8WoucCoVnXP5GhnMwc2tiRacXbMHVf1xM,1943
93
93
  fast_agent/llm/provider/openai/llm_tensorzero_openai.py,sha256=yrV0kZ2zRohErdjhvWGDTl0OnPi2SbuzY_8MchXiVTU,5466
94
94
  fast_agent/llm/provider/openai/llm_xai.py,sha256=fEyO9XlU3Ef1a-cXdJl0Qe-FmE562cA-UJOGvzqLO6M,1375
95
95
  fast_agent/llm/provider/openai/multipart_converter_openai.py,sha256=M7cbM4F8_xycPtVHJv1kBYYBX7KRXyYPCDb1YKQEgo0,20925
96
96
  fast_agent/llm/provider/openai/openai_multipart.py,sha256=uuoRMYWiznYksBODbknBuqe65UxEHE1h7AphHpdnCCM,6864
97
97
  fast_agent/llm/provider/openai/openai_utils.py,sha256=RI9UgF7SGkZ02bAep7glvLy3erbismmZp7wXDsRoJPQ,2034
98
- fast_agent/mcp/__init__.py,sha256=fS322k3GsnZ8LcPImoAy_TtiqgiJgDmMlbgCc7AvVdQ,1458
98
+ fast_agent/mcp/__init__.py,sha256=Q-86MBawKmB602VMut8U3uqUQDOrTAMx2HmHKnWT32Q,1371
99
99
  fast_agent/mcp/common.py,sha256=MpSC0fLO21RcDz4VApah4C8_LisVGz7OXkR17Xw-9mY,431
100
100
  fast_agent/mcp/elicitation_factory.py,sha256=p9tSTcs1KSCXkFcFv1cG7vJBpS1PedOJ5bcBJp0qKw4,3172
101
101
  fast_agent/mcp/elicitation_handlers.py,sha256=LWNKn850Ht9V1SGTfAZDptlsgzrycNhOPNsCcqzsuUY,6884
@@ -104,15 +104,15 @@ fast_agent/mcp/hf_auth.py,sha256=ndDvR7E9LCc5dBiMsStFXtvvX9lYrL-edCq_qJw4lDw,447
104
104
  fast_agent/mcp/interfaces.py,sha256=xCWONGXe4uQSmmBlMZRD3mflPegTJnz2caVNihEl3ok,2411
105
105
  fast_agent/mcp/logger_textio.py,sha256=4YLVXlXghdGm1s_qp1VoAWEX_eWufBfD2iD7l08yoak,3170
106
106
  fast_agent/mcp/mcp_agent_client_session.py,sha256=XRCliiYMxbCbkqS2VSrw7tAtnkLIP9HSRpSWaXW02MQ,13663
107
- fast_agent/mcp/mcp_aggregator.py,sha256=5J1QBGJGZMW7QlqKCWk77_THEzKwiTzKYsqaO_DrTTw,53180
108
- fast_agent/mcp/mcp_connection_manager.py,sha256=vL5JiqSf21sqz9CLX8Ljp-49lDbsRjuG1Rw3hz70fCI,19397
107
+ fast_agent/mcp/mcp_aggregator.py,sha256=9Y7dL482vGPXtEcmF6PRNgrPhmbxEyVyt5QxsoWVGaI,54729
108
+ fast_agent/mcp/mcp_connection_manager.py,sha256=uhQqbOP2_LHDMEgrh1-yvGpueloYVbylvAj-pjYCboA,20247
109
109
  fast_agent/mcp/mcp_content.py,sha256=F9bgJ57EO9sgWg1m-eTNM6xd9js79mHKf4e9O8K8jrI,8829
110
110
  fast_agent/mcp/mime_utils.py,sha256=D6YXNdZJ351BjacSW5o0sVF_hrWuRHD6UyWS4TDlLZI,2915
111
- fast_agent/mcp/oauth_client.py,sha256=O9U0n_UA-ZNDG0IJSvK4sq_joZCrSIeUzTM1iEN8BlU,16003
111
+ fast_agent/mcp/oauth_client.py,sha256=3shN3iwsJNXrk7nbcfUgrzNos3i2RuMuLXA80nR8r6Y,17104
112
112
  fast_agent/mcp/prompt.py,sha256=U3jAIjGyGqCpS96zKf0idC7PI4YdFHq-3qjpCsEybxQ,5983
113
- fast_agent/mcp/prompt_message_extended.py,sha256=-sw6FITvN0rTeIVWDUslNTPYyFEieToydOAf1-phQLs,4650
113
+ fast_agent/mcp/prompt_message_extended.py,sha256=BsiV2SsiZkDlvqzvjeSowq8Ojvowr9XeEfEXAc-hWL8,4721
114
114
  fast_agent/mcp/prompt_render.py,sha256=AqDaQqM6kqciV9X79S5rsRr3VjcQ_2JOiLaHqpRzsS4,2888
115
- fast_agent/mcp/prompt_serialization.py,sha256=oivhqW3WjKYMTw2zE6_LOt8PY7K1ktZr9z9dk1XH9I0,17906
115
+ fast_agent/mcp/prompt_serialization.py,sha256=QMbY0aa_UlJ7bbxl_muOm2TYeYbBVTEeEMHFmEy99ss,20182
116
116
  fast_agent/mcp/resource_utils.py,sha256=cu-l9aOy-NFs8tPihYRNjsB2QSuime8KGOGpUvihp84,6589
117
117
  fast_agent/mcp/sampling.py,sha256=3EhEguls5GpVMr_SYrVQcYSRXlryGmqidn-zbFaeDMk,6711
118
118
  fast_agent/mcp/ui_agent.py,sha256=OBGEuFpOPPK7EthPRwzxmtzu1SDIeZy-vHwdRsyDNQk,1424
@@ -124,8 +124,8 @@ fast_agent/mcp/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
124
124
  fast_agent/mcp/prompts/__main__.py,sha256=Jsx30MceW6_f0rU_RJw2qQVB7zj2yRPP8mXXjBuJiNw,145
125
125
  fast_agent/mcp/prompts/prompt_constants.py,sha256=Q9W0t3rOXl2LHIG9wcghApUV2QZ1iICuo7SwVwHUf3c,566
126
126
  fast_agent/mcp/prompts/prompt_helpers.py,sha256=lvcgG1D61FimGUS5rYifMmmidWwFpIs3Egvjf1sfnkE,7486
127
- fast_agent/mcp/prompts/prompt_load.py,sha256=6_npQBlZ3JzCwcb8Jwxv1zzUnB4cNuSVVj-Kxf3tmE0,5384
128
- fast_agent/mcp/prompts/prompt_server.py,sha256=yc7Ui_9nR0oQimZjX19wp4AkGJIWB8pYP3wB9jma5ys,19241
127
+ fast_agent/mcp/prompts/prompt_load.py,sha256=muv-3u0fJODYFTRWnrPWGJIFHuyDXZd5DudiZEkuVPc,5495
128
+ fast_agent/mcp/prompts/prompt_server.py,sha256=ZuUFqYfiYYE8yTXw0qagGWkZkelQgETGBpzUIdIhLXc,20174
129
129
  fast_agent/mcp/prompts/prompt_template.py,sha256=SAklXs9wujYqqEWv5vzRI_cdjSmGnWlDmPLZ5qkXZO4,15695
130
130
  fast_agent/mcp/server/__init__.py,sha256=AJFNzdmuHPRL3jqFhDVDJste_zYE_KJ3gGYDsbghvl0,156
131
131
  fast_agent/mcp/server/agent_server.py,sha256=zJMFnPfXPsbLt5ZyGMTN90YzIzwV7TaSQ4WYs9lnB2Q,20194
@@ -178,28 +178,28 @@ fast_agent/resources/examples/workflows/parallel.py,sha256=kROiRueTm0Wql4EWVjFSy
178
178
  fast_agent/resources/examples/workflows/router.py,sha256=lxMxz6g0_XjYnwzEwKdl9l2hxRsD4PSsaIlhH5nLuQY,2075
179
179
  fast_agent/resources/examples/workflows/short_story.md,sha256=XN9I2kzCcMmke3dE5F2lyRH5iFUZUQ8Sy-hS3rm_Wlc,1153
180
180
  fast_agent/resources/examples/workflows/short_story.txt,sha256=X3y_1AyhLFN2AKzCKvucJtDgAFIJfnlbsbGZO5bBWu0,1187
181
- fast_agent/resources/setup/.gitignore,sha256=UQKYvhK6samGg5JZg613XiuGUkUAz2qzE1WfFa8J0mQ,245
182
- fast_agent/resources/setup/agent.py,sha256=cRQfWFkWJxF1TkWASXf8nuHbIDUgyk5o23vyoroSBOY,407
183
- fast_agent/resources/setup/fastagent.config.yaml,sha256=GoXfrLXolMjl9oqam5lodzm40OmZDOkng99BSSP26pY,1446
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=4lYdNTUqBwp7DiyeoUDqBDlqfnFi9JTihOTnix3V9M0,1464
184
184
  fast_agent/resources/setup/fastagent.secrets.yaml.example,sha256=ht-i2_SpAyeXG2OnG_vOA1n7gRsGIInxp9g5Nio-jpI,1038
185
- fast_agent/resources/setup/pyproject.toml.tmpl,sha256=b_dL9TBAzA4sPOkVZd3psMKFT-g_gef0n2NcANojEqs,343
185
+ fast_agent/resources/setup/pyproject.toml.tmpl,sha256=SxyVPXbtD67yFOx9wIrzq6Yxo4W2PkSR1rrnPkmpjwA,478
186
186
  fast_agent/tools/elicitation.py,sha256=8FaNvuN__LAM328VSJ5T4Bg3m8auHraqYvIYv6Eh4KU,13464
187
- fast_agent/types/__init__.py,sha256=IpUWlzx3u_3h99F2IKJ8aPjyGZXguOwkOVJKGrst6hg,951
187
+ fast_agent/types/__init__.py,sha256=y-53m-C4drf4Rx8Bbnk_GAhko9LdNYCyRUWya8e0mos,1004
188
188
  fast_agent/types/llm_stop_reason.py,sha256=bWe97OfhALUe8uQeAQOnTdPlYzJiabIfo8u38kPgj3Q,2293
189
189
  fast_agent/ui/__init__.py,sha256=MXxTQjFdF7mI_3JHxBPd-aoZYLlxV_-51-Trqgv5-3w,1104
190
190
  fast_agent/ui/console.py,sha256=Gjf2QLFumwG1Lav__c07X_kZxxEUSkzV-1_-YbAwcwo,813
191
- fast_agent/ui/console_display.py,sha256=x_0pmQgMAasfUfv_MwoGJyXSwT7y-BxPGWJWGblSSJQ,40367
191
+ fast_agent/ui/console_display.py,sha256=gzSehwK-6b5Y1amflnhocTWtuRtIjoS990qChR6O8oA,40922
192
192
  fast_agent/ui/elicitation_form.py,sha256=t3UhBG44YmxTLu1RjCnHwW36eQQaroE45CiBGJB2czg,29410
193
193
  fast_agent/ui/elicitation_style.py,sha256=rtZiJH4CwTdkDLSzDDvThlZyIyuRX0oVNzscKiHvry8,3835
194
- fast_agent/ui/enhanced_prompt.py,sha256=w99sJkdAn2WVtIT9hLumhz1DQY-H9a0Qq80JSM0jRg8,40080
195
- fast_agent/ui/interactive_prompt.py,sha256=lxY26PNBNihtccO4iI7CxIag_9CxEcbajbIPdzqnEcM,43230
194
+ fast_agent/ui/enhanced_prompt.py,sha256=fryozXzcdYFBFetCTvIZLc04FqI6pBXNqBZoHtOC2m4,41889
195
+ fast_agent/ui/interactive_prompt.py,sha256=WiaW2smPyd6_WLLAnjyPa3-oA-92OtwRwl4tagbH5aQ,44600
196
196
  fast_agent/ui/mcp_ui_utils.py,sha256=hV7z-yHX86BgdH6CMmN5qyOUjyiegQXLJOa5n5A1vQs,8476
197
197
  fast_agent/ui/mermaid_utils.py,sha256=MpcRyVCPMTwU1XeIxnyFg0fQLjcyXZduWRF8NhEqvXE,5332
198
198
  fast_agent/ui/progress_display.py,sha256=hajDob65PttiJ2mPS6FsCtnmTcnyvDWGn-UqQboXqkQ,361
199
- fast_agent/ui/rich_progress.py,sha256=jy6VuUOYFkWXdyvnRTSBPAmmNAP6TJDFw_lgbt_YYLo,7548
199
+ fast_agent/ui/rich_progress.py,sha256=fMiTigtkll4gL4Ik5WYHx-t0a92jfUovj0b580rT6J0,7735
200
200
  fast_agent/ui/usage_display.py,sha256=ltJpn_sDzo8PDNSXWx-QdEUbQWUnhmajCItNt5mA5rM,7285
201
- fast_agent_mcp-0.3.5.dist-info/METADATA,sha256=DuTTbjbnDeBMTx7zweiM7QU1T0kfdZ_Jqpf7E99Hx4k,31696
202
- fast_agent_mcp-0.3.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
203
- fast_agent_mcp-0.3.5.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
204
- fast_agent_mcp-0.3.5.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
205
- fast_agent_mcp-0.3.5.dist-info/RECORD,,
201
+ fast_agent_mcp-0.3.7.dist-info/METADATA,sha256=6O9VvjRCmO2Uc_56cspXUVYjt0vOA03p8R4m1ggxKho,31696
202
+ fast_agent_mcp-0.3.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
203
+ fast_agent_mcp-0.3.7.dist-info/entry_points.txt,sha256=i6Ujja9J-hRxttOKqTYdbYP_tyaS4gLHg53vupoCSsg,199
204
+ fast_agent_mcp-0.3.7.dist-info/licenses/LICENSE,sha256=Gx1L3axA4PnuK4FxsbX87jQ1opoOkSFfHHSytW6wLUU,10935
205
+ fast_agent_mcp-0.3.7.dist-info/RECORD,,