fast-agent-mcp 0.1.12__py3-none-any.whl → 0.2.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.
Files changed (169) hide show
  1. {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/METADATA +3 -4
  2. fast_agent_mcp-0.2.0.dist-info/RECORD +123 -0
  3. mcp_agent/__init__.py +75 -0
  4. mcp_agent/agents/agent.py +61 -415
  5. mcp_agent/agents/base_agent.py +522 -0
  6. mcp_agent/agents/workflow/__init__.py +1 -0
  7. mcp_agent/agents/workflow/chain_agent.py +173 -0
  8. mcp_agent/agents/workflow/evaluator_optimizer.py +362 -0
  9. mcp_agent/agents/workflow/orchestrator_agent.py +591 -0
  10. mcp_agent/{workflows/orchestrator → agents/workflow}/orchestrator_models.py +11 -21
  11. mcp_agent/agents/workflow/parallel_agent.py +182 -0
  12. mcp_agent/agents/workflow/router_agent.py +307 -0
  13. mcp_agent/app.py +15 -19
  14. mcp_agent/cli/commands/bootstrap.py +19 -38
  15. mcp_agent/cli/commands/config.py +4 -4
  16. mcp_agent/cli/commands/setup.py +7 -14
  17. mcp_agent/cli/main.py +7 -10
  18. mcp_agent/cli/terminal.py +3 -3
  19. mcp_agent/config.py +25 -40
  20. mcp_agent/context.py +12 -21
  21. mcp_agent/context_dependent.py +3 -5
  22. mcp_agent/core/agent_types.py +10 -7
  23. mcp_agent/core/direct_agent_app.py +179 -0
  24. mcp_agent/core/direct_decorators.py +443 -0
  25. mcp_agent/core/direct_factory.py +476 -0
  26. mcp_agent/core/enhanced_prompt.py +23 -55
  27. mcp_agent/core/exceptions.py +8 -8
  28. mcp_agent/core/fastagent.py +145 -371
  29. mcp_agent/core/interactive_prompt.py +424 -0
  30. mcp_agent/core/mcp_content.py +17 -17
  31. mcp_agent/core/prompt.py +6 -9
  32. mcp_agent/core/request_params.py +6 -3
  33. mcp_agent/core/validation.py +92 -18
  34. mcp_agent/executor/decorator_registry.py +9 -17
  35. mcp_agent/executor/executor.py +8 -17
  36. mcp_agent/executor/task_registry.py +2 -4
  37. mcp_agent/executor/temporal.py +19 -41
  38. mcp_agent/executor/workflow.py +3 -5
  39. mcp_agent/executor/workflow_signal.py +15 -21
  40. mcp_agent/human_input/handler.py +4 -7
  41. mcp_agent/human_input/types.py +2 -3
  42. mcp_agent/llm/__init__.py +2 -0
  43. mcp_agent/llm/augmented_llm.py +450 -0
  44. mcp_agent/llm/augmented_llm_passthrough.py +162 -0
  45. mcp_agent/llm/augmented_llm_playback.py +83 -0
  46. mcp_agent/llm/memory.py +103 -0
  47. mcp_agent/{workflows/llm → llm}/model_factory.py +22 -16
  48. mcp_agent/{workflows/llm → llm}/prompt_utils.py +1 -3
  49. mcp_agent/llm/providers/__init__.py +8 -0
  50. mcp_agent/{workflows/llm → llm/providers}/anthropic_utils.py +8 -25
  51. mcp_agent/{workflows/llm → llm/providers}/augmented_llm_anthropic.py +56 -194
  52. mcp_agent/llm/providers/augmented_llm_deepseek.py +53 -0
  53. mcp_agent/{workflows/llm → llm/providers}/augmented_llm_openai.py +99 -190
  54. mcp_agent/{workflows/llm → llm}/providers/multipart_converter_anthropic.py +72 -71
  55. mcp_agent/{workflows/llm → llm}/providers/multipart_converter_openai.py +65 -71
  56. mcp_agent/{workflows/llm → llm}/providers/openai_multipart.py +16 -44
  57. mcp_agent/{workflows/llm → llm/providers}/openai_utils.py +4 -4
  58. mcp_agent/{workflows/llm → llm}/providers/sampling_converter_anthropic.py +9 -11
  59. mcp_agent/{workflows/llm → llm}/providers/sampling_converter_openai.py +8 -12
  60. mcp_agent/{workflows/llm → llm}/sampling_converter.py +3 -31
  61. mcp_agent/llm/sampling_format_converter.py +37 -0
  62. mcp_agent/logging/events.py +1 -5
  63. mcp_agent/logging/json_serializer.py +7 -6
  64. mcp_agent/logging/listeners.py +20 -23
  65. mcp_agent/logging/logger.py +17 -19
  66. mcp_agent/logging/rich_progress.py +10 -8
  67. mcp_agent/logging/tracing.py +4 -6
  68. mcp_agent/logging/transport.py +22 -22
  69. mcp_agent/mcp/gen_client.py +1 -3
  70. mcp_agent/mcp/interfaces.py +117 -110
  71. mcp_agent/mcp/logger_textio.py +97 -0
  72. mcp_agent/mcp/mcp_agent_client_session.py +7 -7
  73. mcp_agent/mcp/mcp_agent_server.py +8 -8
  74. mcp_agent/mcp/mcp_aggregator.py +102 -143
  75. mcp_agent/mcp/mcp_connection_manager.py +20 -27
  76. mcp_agent/mcp/prompt_message_multipart.py +68 -16
  77. mcp_agent/mcp/prompt_render.py +77 -0
  78. mcp_agent/mcp/prompt_serialization.py +30 -48
  79. mcp_agent/mcp/prompts/prompt_constants.py +18 -0
  80. mcp_agent/mcp/prompts/prompt_helpers.py +327 -0
  81. mcp_agent/mcp/prompts/prompt_load.py +109 -0
  82. mcp_agent/mcp/prompts/prompt_server.py +155 -195
  83. mcp_agent/mcp/prompts/prompt_template.py +35 -66
  84. mcp_agent/mcp/resource_utils.py +7 -14
  85. mcp_agent/mcp/sampling.py +17 -17
  86. mcp_agent/mcp_server/agent_server.py +13 -17
  87. mcp_agent/mcp_server_registry.py +13 -22
  88. mcp_agent/resources/examples/{workflows → in_dev}/agent_build.py +3 -2
  89. mcp_agent/resources/examples/in_dev/slides.py +110 -0
  90. mcp_agent/resources/examples/internal/agent.py +6 -3
  91. mcp_agent/resources/examples/internal/fastagent.config.yaml +8 -2
  92. mcp_agent/resources/examples/internal/job.py +2 -1
  93. mcp_agent/resources/examples/internal/prompt_category.py +1 -1
  94. mcp_agent/resources/examples/internal/prompt_sizing.py +3 -5
  95. mcp_agent/resources/examples/internal/sizer.py +2 -1
  96. mcp_agent/resources/examples/internal/social.py +2 -1
  97. mcp_agent/resources/examples/prompting/agent.py +2 -1
  98. mcp_agent/resources/examples/prompting/image_server.py +4 -8
  99. mcp_agent/resources/examples/prompting/work_with_image.py +19 -0
  100. mcp_agent/ui/console_display.py +16 -20
  101. fast_agent_mcp-0.1.12.dist-info/RECORD +0 -161
  102. mcp_agent/core/agent_app.py +0 -646
  103. mcp_agent/core/agent_utils.py +0 -71
  104. mcp_agent/core/decorators.py +0 -455
  105. mcp_agent/core/factory.py +0 -463
  106. mcp_agent/core/proxies.py +0 -269
  107. mcp_agent/core/types.py +0 -24
  108. mcp_agent/eval/__init__.py +0 -0
  109. mcp_agent/mcp/stdio.py +0 -111
  110. mcp_agent/resources/examples/data-analysis/analysis-campaign.py +0 -188
  111. mcp_agent/resources/examples/data-analysis/analysis.py +0 -65
  112. mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -41
  113. mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -1471
  114. mcp_agent/resources/examples/mcp_researcher/researcher-eval.py +0 -53
  115. mcp_agent/resources/examples/researcher/fastagent.config.yaml +0 -66
  116. mcp_agent/resources/examples/researcher/researcher-eval.py +0 -53
  117. mcp_agent/resources/examples/researcher/researcher-imp.py +0 -190
  118. mcp_agent/resources/examples/researcher/researcher.py +0 -38
  119. mcp_agent/resources/examples/workflows/chaining.py +0 -44
  120. mcp_agent/resources/examples/workflows/evaluator.py +0 -78
  121. mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -24
  122. mcp_agent/resources/examples/workflows/human_input.py +0 -25
  123. mcp_agent/resources/examples/workflows/orchestrator.py +0 -73
  124. mcp_agent/resources/examples/workflows/parallel.py +0 -78
  125. mcp_agent/resources/examples/workflows/router.py +0 -53
  126. mcp_agent/resources/examples/workflows/sse.py +0 -23
  127. mcp_agent/telemetry/__init__.py +0 -0
  128. mcp_agent/telemetry/usage_tracking.py +0 -18
  129. mcp_agent/workflows/__init__.py +0 -0
  130. mcp_agent/workflows/embedding/__init__.py +0 -0
  131. mcp_agent/workflows/embedding/embedding_base.py +0 -61
  132. mcp_agent/workflows/embedding/embedding_cohere.py +0 -49
  133. mcp_agent/workflows/embedding/embedding_openai.py +0 -46
  134. mcp_agent/workflows/evaluator_optimizer/__init__.py +0 -0
  135. mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py +0 -481
  136. mcp_agent/workflows/intent_classifier/__init__.py +0 -0
  137. mcp_agent/workflows/intent_classifier/intent_classifier_base.py +0 -120
  138. mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py +0 -134
  139. mcp_agent/workflows/intent_classifier/intent_classifier_embedding_cohere.py +0 -45
  140. mcp_agent/workflows/intent_classifier/intent_classifier_embedding_openai.py +0 -45
  141. mcp_agent/workflows/intent_classifier/intent_classifier_llm.py +0 -161
  142. mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py +0 -60
  143. mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py +0 -60
  144. mcp_agent/workflows/llm/__init__.py +0 -0
  145. mcp_agent/workflows/llm/augmented_llm.py +0 -753
  146. mcp_agent/workflows/llm/augmented_llm_passthrough.py +0 -241
  147. mcp_agent/workflows/llm/augmented_llm_playback.py +0 -109
  148. mcp_agent/workflows/llm/providers/__init__.py +0 -8
  149. mcp_agent/workflows/llm/sampling_format_converter.py +0 -22
  150. mcp_agent/workflows/orchestrator/__init__.py +0 -0
  151. mcp_agent/workflows/orchestrator/orchestrator.py +0 -578
  152. mcp_agent/workflows/parallel/__init__.py +0 -0
  153. mcp_agent/workflows/parallel/fan_in.py +0 -350
  154. mcp_agent/workflows/parallel/fan_out.py +0 -187
  155. mcp_agent/workflows/parallel/parallel_llm.py +0 -166
  156. mcp_agent/workflows/router/__init__.py +0 -0
  157. mcp_agent/workflows/router/router_base.py +0 -368
  158. mcp_agent/workflows/router/router_embedding.py +0 -240
  159. mcp_agent/workflows/router/router_embedding_cohere.py +0 -59
  160. mcp_agent/workflows/router/router_embedding_openai.py +0 -59
  161. mcp_agent/workflows/router/router_llm.py +0 -320
  162. mcp_agent/workflows/swarm/__init__.py +0 -0
  163. mcp_agent/workflows/swarm/swarm.py +0 -320
  164. mcp_agent/workflows/swarm/swarm_anthropic.py +0 -42
  165. mcp_agent/workflows/swarm/swarm_openai.py +0 -41
  166. {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/WHEEL +0 -0
  167. {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/entry_points.txt +0 -0
  168. {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/licenses/LICENSE +0 -0
  169. /mcp_agent/{workflows/orchestrator → agents/workflow}/orchestrator_prompts.py +0 -0
@@ -0,0 +1,110 @@
1
+ import asyncio
2
+ from pathlib import Path
3
+ from typing import TYPE_CHECKING
4
+
5
+ from mcp_agent.core.fastagent import FastAgent
6
+ from mcp_agent.llm.augmented_llm import RequestParams
7
+ from mcp_agent.mcp.prompts.prompt_load import load_prompt_multipart
8
+
9
+ if TYPE_CHECKING:
10
+ from mcp_agent.mcp.prompt_message_multipart import PromptMessageMultipart
11
+
12
+ # Create the application
13
+ fast = FastAgent("Data Analysis (Roots)")
14
+
15
+
16
+ # The sample data is under Database Contents License (DbCL) v1.0.
17
+
18
+ # Available here : https://www.kaggle.com/datasets/pavansubhasht/ibm-hr-analytics-attrition-dataset
19
+
20
+ # The CSS files are distributed under the MIT License from the excellent
21
+ # marpstyle project : https://github.com/cunhapaulo/marpstyle
22
+
23
+
24
+ @fast.agent(
25
+ name="slides",
26
+ servers=["filesystem"],
27
+ instruction="""
28
+ You produce compelling slide decks for impactful presentations. You usually try and keep the pack to between
29
+ 8-12 slides, with key insights at the start, backed up with data, diagrams and analysis as available. You
30
+ are able to help direct colour, style and and questions for enhancing the presentation. Produced charts and
31
+ visualisations will be in the ./mount-point/ directory. You output MARP markdown files.
32
+ """,
33
+ request_params=RequestParams(maxTokens=8192),
34
+ )
35
+ @fast.agent(
36
+ name="data_analysis",
37
+ instruction="""
38
+ You have access to a Python 3.12 interpreter and you can use this to analyse and process data.
39
+ Common analysis packages such as Pandas, Seaborn and Matplotlib are already installed.
40
+ You can add further packages if needed.
41
+ Data files are accessible from the /mnt/data/ directory (this is the current working directory).
42
+ Visualisations should be saved as .png files in the current working directory.
43
+ """,
44
+ servers=["interpreter"],
45
+ request_params=RequestParams(maxTokens=8192),
46
+ )
47
+ @fast.orchestrator(
48
+ name="orchestrator",
49
+ plan_type="iterative",
50
+ agents=["slides", "data_analysis"],
51
+ )
52
+ async def main() -> None:
53
+ # Use the app's context manager
54
+ async with fast.run() as agent:
55
+ prompts: list[PromptMessageMultipart] = load_prompt_multipart(Path("slides.md"))
56
+ await agent.slides.apply_prompt_messages(prompts)
57
+
58
+ await agent.orchestrator.send(
59
+ "Produce a compelling presentation for the CSV data file in the /mnt/data/ directory."
60
+ "The slides agent will produce a presentation, make sure to consult it first for "
61
+ "colour scheme and formatting guidance. Make sure that any 'call-outs' have a distinct"
62
+ "background to ensure they stand out."
63
+ "Make sure the presentation is impactful, concise and visualises key insights in to the data"
64
+ " in a compelling way."
65
+ "The presentation is by the 'llmindset team' and produced in 'march 2025'."
66
+ "Produce it step-by-step; long responses without checking in are likely to exceed"
67
+ "maximum output token limits."
68
+ )
69
+ # colours: str = await agent.slides.send("Tell the Data Analysis agent what colour schemes and chart sizes you prefer for the presentation")
70
+
71
+ # analysis: str = await agent.data_analysis.send(
72
+ # "Examine the CSV file in /mnt/data, produce a detailed analysis of the data,"
73
+ # "and any patterns it contains. Visualise some of the key points, saving .png files to"
74
+ # "your current workig folder (/mnt/data). Respond with a summary of your findings, and a list"
75
+ # "of visualiations and their filenames ready to incorporate in to a slide deck. The presentation agent has"
76
+ # f"specified the following style guidelines for generated charts:\n {colours}"
77
+ # )
78
+ # await agent.slides.send(
79
+ # "Produce a MARP Presentation for the this analysis. You will find the visualisations in "
80
+ # f"in the ./mount-point/ folder. The analysis follows....\n{analysis}"
81
+ # )
82
+
83
+ await agent()
84
+
85
+
86
+ if __name__ == "__main__":
87
+ asyncio.run(main())
88
+
89
+
90
+ ############################################################################################################
91
+ # Example of evaluator/optimizer flow
92
+ ############################################################################################################
93
+ # @fast.agent(
94
+ # "evaluator",
95
+ # """You are collaborating with a Data Analysis tool that has the capability to analyse data and produce visualisations.
96
+ # You must make sure that the tool has:
97
+ # - Considered the best way for a Human to interpret the data
98
+ # - Produced insightful visualasions.
99
+ # - Provided a high level summary report for the Human.
100
+ # - Has had its findings challenged, and justified
101
+ # """,
102
+ # request_params=RequestParams(maxTokens=8192),
103
+ # )
104
+ # @fast.evaluator_optimizer(
105
+ # "analysis_tool",
106
+ # generator="data_analysis",
107
+ # evaluator="evaluator",
108
+ # max_refinements=3,
109
+ # min_rating="EXCELLENT",
110
+ # )
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+
2
3
  from mcp_agent.core.fastagent import FastAgent
3
4
 
4
5
  # Create the application
@@ -6,11 +7,13 @@ fast = FastAgent("FastAgent Example")
6
7
 
7
8
 
8
9
  # Define the agent
9
- @fast.agent(servers=["fetch", "mcp_hfspace"])
10
- async def main():
10
+ @fast.agent(servers=["category", "mcp_hfspace"])
11
+ #@fast.agent(name="test")
12
+ async def main() -> None:
11
13
  # use the --model command line switch or agent arguments to change model
12
14
  async with fast.run() as agent:
13
- await agent.prompt()
15
+ # await agent.prompt(agent_name="test")
16
+ await agent.send("hello,world")
14
17
 
15
18
 
16
19
  if __name__ == "__main__":
@@ -2,6 +2,10 @@ default_model: sonnet
2
2
 
3
3
  # on windows, adjust the mount point to be the full path e.g. x:/temp/data-analysis/mount-point:/mnt/data/
4
4
 
5
+ # logger:
6
+ # level: "debug"
7
+ # type: "console"
8
+
5
9
  mcp:
6
10
  servers:
7
11
  interpreter:
@@ -47,9 +51,11 @@ mcp:
47
51
  sizing_setup:
48
52
  command: "uv"
49
53
  args: ["run", "prompt_sizing1.py"]
54
+
50
55
  category:
51
- command: "uv"
52
- args: ["run", "prompt_category.py"]
56
+ command: "prompt-server"
57
+ args: ["simple.txt"]
58
+
53
59
  mcp_hfspace:
54
60
  command: "npx"
55
61
  args: ["@llmindset/mcp-hfspace"]
@@ -5,6 +5,7 @@ PMO Job Description Generator Agent
5
5
  """
6
6
 
7
7
  import asyncio
8
+
8
9
  from mcp_agent.core.fastagent import FastAgent
9
10
 
10
11
  # Create the application
@@ -57,7 +58,7 @@ fast = FastAgent("PMO Job Description Generator")
57
58
  min_rating="EXCELLENT",
58
59
  max_refinements=2,
59
60
  )
60
- async def main():
61
+ async def main() -> None:
61
62
  async with fast.run() as agent:
62
63
  roles = [
63
64
  "PMO Director",
@@ -1,5 +1,5 @@
1
1
  from mcp.server.fastmcp import FastMCP
2
- from mcp.server.fastmcp.prompts.base import UserMessage, AssistantMessage
2
+ from mcp.server.fastmcp.prompts.base import AssistantMessage, UserMessage
3
3
 
4
4
  mcp = FastMCP("MCP Root Tester")
5
5
 
@@ -1,6 +1,6 @@
1
- from pydantic import Field
2
1
  from mcp.server.fastmcp import FastMCP
3
- from mcp.server.fastmcp.prompts.base import UserMessage, AssistantMessage
2
+ from mcp.server.fastmcp.prompts.base import AssistantMessage, UserMessage
3
+ from pydantic import Field
4
4
 
5
5
  mcp = FastMCP("MCP Prompt Tester")
6
6
 
@@ -23,9 +23,7 @@ def sizing_prompt():
23
23
  description="set up the sizing protocol with metric or imperial units",
24
24
  )
25
25
  def sizing_prompt_units(
26
- metric: bool = Field(
27
- description="Set to True for Metric, False for Imperial", default=True
28
- ),
26
+ metric: bool = Field(description="Set to True for Metric, False for Imperial", default=True),
29
27
  ):
30
28
  if metric:
31
29
  return [
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+
2
3
  from mcp_agent.core.fastagent import FastAgent
3
4
 
4
5
  fast = FastAgent("Sizer Prompt Test")
@@ -10,7 +11,7 @@ fast = FastAgent("Sizer Prompt Test")
10
11
  servers=["sizer", "category"],
11
12
  use_history=True,
12
13
  )
13
- async def main():
14
+ async def main() -> None:
14
15
  async with fast.run() as agent:
15
16
  await agent()
16
17
 
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+
2
3
  from mcp_agent.core.fastagent import FastAgent
3
4
 
4
5
  # Create the application
@@ -56,7 +57,7 @@ Social Media report ready to review with the Human.
56
57
  "human_review_and_post",
57
58
  ],
58
59
  )
59
- async def main():
60
+ async def main() -> None:
60
61
  async with fast.run() as agent:
61
62
  # using chain workflow
62
63
  await agent.post_writer.prompt()
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+
2
3
  from mcp_agent.core.fastagent import FastAgent
3
4
 
4
5
  # Create the application
@@ -13,7 +14,7 @@ fast = FastAgent("FastAgent Example")
13
14
  # model="gpt-4o",
14
15
  # instruction="You are a helpful AI Agent", servers=["prompts","basic_memory"], model="haiku"
15
16
  )
16
- async def main():
17
+ async def main() -> None:
17
18
  # use the --model command line switch or agent arguments to change model
18
19
  async with fast.run() as agent:
19
20
  await agent()
@@ -6,8 +6,8 @@ Simple MCP server that responds to tool calls with text and image content.
6
6
  import logging
7
7
  from pathlib import Path
8
8
 
9
- from mcp.server.fastmcp import FastMCP, Context, Image
10
- from mcp.types import TextContent, ImageContent
9
+ from mcp.server.fastmcp import Context, FastMCP, Image
10
+ from mcp.types import ImageContent, TextContent
11
11
 
12
12
  # Configure logging
13
13
  logging.basicConfig(level=logging.INFO)
@@ -45,12 +45,8 @@ async def get_image(
45
45
  if __name__ == "__main__":
46
46
  # Check if the default image exists
47
47
  if not Path("image.jpg").exists():
48
- logger.warning(
49
- "Default image file 'image.jpg' not found in the current directory"
50
- )
51
- logger.warning(
52
- "Please add an image file named 'image.jpg' to the current directory"
53
- )
48
+ logger.warning("Default image file 'image.jpg' not found in the current directory")
49
+ logger.warning("Please add an image file named 'image.jpg' to the current directory")
54
50
 
55
51
  # Run the server using stdio transport
56
52
  app.run(transport="stdio")
@@ -0,0 +1,19 @@
1
+ import asyncio
2
+ from pathlib import Path
3
+
4
+ from mcp_agent.core.fastagent import FastAgent
5
+ from mcp_agent.core.prompt import Prompt
6
+
7
+ # Create the application
8
+ fast = FastAgent("FastAgent Example")
9
+
10
+
11
+ # Define the agent
12
+ @fast.agent("agent", instruction="You are a helpful AI Agent", servers=["prompts"])
13
+ async def main() -> None:
14
+ async with fast.run() as agent:
15
+ await agent.agent.generate([Prompt.user("What's in this image?", Path("image.png"))])
16
+
17
+
18
+ if __name__ == "__main__":
19
+ asyncio.run(main())
@@ -17,7 +17,7 @@ class ConsoleDisplay:
17
17
  This centralizes the UI display logic used by LLM implementations.
18
18
  """
19
19
 
20
- def __init__(self, config=None):
20
+ def __init__(self, config=None) -> None:
21
21
  """
22
22
  Initialize the console display handler.
23
23
 
@@ -26,7 +26,7 @@ class ConsoleDisplay:
26
26
  """
27
27
  self.config = config
28
28
 
29
- def show_tool_result(self, result: CallToolResult):
29
+ def show_tool_result(self, result: CallToolResult) -> None:
30
30
  """Display a tool result in a formatted panel."""
31
31
  if not self.config or not self.config.logger.show_tools:
32
32
  return
@@ -49,7 +49,7 @@ class ConsoleDisplay:
49
49
  console.console.print(panel)
50
50
  console.console.print("\n")
51
51
 
52
- def show_oai_tool_result(self, result):
52
+ def show_oai_tool_result(self, result) -> None:
53
53
  """Display an OpenAI tool result in a formatted panel."""
54
54
  if not self.config or not self.config.logger.show_tools:
55
55
  return
@@ -70,7 +70,7 @@ class ConsoleDisplay:
70
70
  console.console.print(panel)
71
71
  console.console.print("\n")
72
72
 
73
- def show_tool_call(self, available_tools, tool_name, tool_args):
73
+ def show_tool_call(self, available_tools, tool_name, tool_args) -> None:
74
74
  """Display a tool call in a formatted panel."""
75
75
  if not self.config or not self.config.logger.show_tools:
76
76
  return
@@ -122,12 +122,8 @@ class ConsoleDisplay:
122
122
  )
123
123
 
124
124
  if selected_tool_name.split(SEP)[0] == parts[0]:
125
- style = (
126
- "magenta" if tool_call_name == selected_tool_name else "dim white"
127
- )
128
- shortened_name = (
129
- parts[1] if len(parts[1]) <= 12 else parts[1][:11] + "…"
130
- )
125
+ style = "magenta" if tool_call_name == selected_tool_name else "dim white"
126
+ shortened_name = parts[1] if len(parts[1]) <= 12 else parts[1][:11] + "…"
131
127
  display_tool_list.append(f"[{shortened_name}] ", style)
132
128
 
133
129
  return display_tool_list
@@ -139,7 +135,7 @@ class ConsoleDisplay:
139
135
  highlight_namespaced_tool: str = "",
140
136
  title: str = "ASSISTANT",
141
137
  name: Optional[str] = None,
142
- ):
138
+ ) -> None:
143
139
  """Display an assistant message in a formatted panel."""
144
140
  if not self.config or not self.config.logger.show_chat:
145
141
  return
@@ -151,9 +147,7 @@ class ConsoleDisplay:
151
147
  tools = await aggregator.list_tools()
152
148
  if any(tool.name == HUMAN_INPUT_TOOL_NAME for tool in tools.tools):
153
149
  style = (
154
- "green"
155
- if highlight_namespaced_tool == HUMAN_INPUT_TOOL_NAME
156
- else "dim white"
150
+ "green" if highlight_namespaced_tool == HUMAN_INPUT_TOOL_NAME else "dim white"
157
151
  )
158
152
  display_server_list.append("[human] ", style)
159
153
 
@@ -183,11 +177,15 @@ class ConsoleDisplay:
183
177
 
184
178
  def show_user_message(
185
179
  self, message, model: Optional[str], chat_turn: int, name: Optional[str] = None
186
- ):
180
+ ) -> None:
187
181
  """Display a user message in a formatted panel."""
188
182
  if not self.config or not self.config.logger.show_chat:
189
183
  return
190
184
 
185
+ subtitle_text = Text(f"{model or 'unknown'}", style="dim white")
186
+ if chat_turn > 0:
187
+ subtitle_text.append(f" turn {chat_turn}", style="dim white")
188
+
191
189
  panel = Panel(
192
190
  message,
193
191
  title=f"{f'({name}) [USER]' if name else '[USER]'}",
@@ -195,7 +193,7 @@ class ConsoleDisplay:
195
193
  style="blue",
196
194
  border_style="bold white",
197
195
  padding=(1, 2),
198
- subtitle=Text(f"{model or 'unknown'} turn {chat_turn}", style="dim white"),
196
+ subtitle=subtitle_text,
199
197
  subtitle_align="left",
200
198
  )
201
199
  console.console.print(panel)
@@ -209,7 +207,7 @@ class ConsoleDisplay:
209
207
  agent_name: Optional[str] = None,
210
208
  aggregator=None,
211
209
  arguments: Optional[dict[str, str]] = None,
212
- ):
210
+ ) -> None:
213
211
  """
214
212
  Display information about a loaded prompt template.
215
213
 
@@ -242,9 +240,7 @@ class ConsoleDisplay:
242
240
 
243
241
  # Create content text
244
242
  content = Text()
245
- messages_phrase = (
246
- f"Loaded {message_count} message{'s' if message_count != 1 else ''}"
247
- )
243
+ messages_phrase = f"Loaded {message_count} message{'s' if message_count != 1 else ''}"
248
244
  content.append(f"{messages_phrase} from template ", style="cyan italic")
249
245
  content.append(f"'{prompt_name}'", style="cyan bold italic")
250
246
 
@@ -1,161 +0,0 @@
1
- mcp_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- mcp_agent/app.py,sha256=cDHUDO6In03iq0QwkzLkIs0QyjokWF42L_fp7xwM8rE,10264
3
- mcp_agent/config.py,sha256=cEiY_J5MqKj23KkHtzP1h04yalaGgO2OiXErduiVf2M,10890
4
- mcp_agent/console.py,sha256=Gjf2QLFumwG1Lav__c07X_kZxxEUSkzV-1_-YbAwcwo,813
5
- mcp_agent/context.py,sha256=iTDO_T42YWVoIv-5hUZRRRBoejmK6LFA96VRR8ECDik,7917
6
- mcp_agent/context_dependent.py,sha256=TGqRLzYCOnsWGoaD1HtrliYtWo8MeaWCQk6ePUmyYCw,1446
7
- mcp_agent/event_progress.py,sha256=25iz0yyg-O4glMmtijcYpDdUmtUIKsCmR_8A52GgeC4,2716
8
- mcp_agent/mcp_server_registry.py,sha256=eQbl0usicnsNE03haxc6C_FHl_0goPAZdcb082cDIQk,9992
9
- mcp_agent/progress_display.py,sha256=GeJU9VUt6qKsFVymG688hCMVCsAygG9ifiiEb5IcbN4,361
10
- mcp_agent/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- mcp_agent/agents/agent.py,sha256=nThss3gP6SZv27DA1EVHK0Q1IsKKjQCN6qktosUxbSs,16668
12
- mcp_agent/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- mcp_agent/cli/__main__.py,sha256=AVZ7tQFhU_sDOGuUGJq8ujgKtcxsYJBJwHbVaaiRDlI,166
14
- mcp_agent/cli/main.py,sha256=DE6EZzspfzHwPK59x8vL4AIDHRQkVQ1Ja70XRGU1IQs,2753
15
- mcp_agent/cli/terminal.py,sha256=5fqrKlJvIpKEuvpvZ653OueQSYFFktBEbosjr2ucMUc,1026
16
- mcp_agent/cli/commands/bootstrap.py,sha256=Rmwbuwl52eHfnya7fnwKk2J7nCsHpSh6irka4mBDEnU,10779
17
- mcp_agent/cli/commands/config.py,sha256=32YTS5jmsYAs9QzAhjkG70_daAHqOemf4XbZBBSMz6g,204
18
- mcp_agent/cli/commands/setup.py,sha256=_SCpd6_PrixqbSaE72JQ7erIRkZnJGmh_3TvvwSzEiE,6392
19
- mcp_agent/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- mcp_agent/core/agent_app.py,sha256=KSOpxu6gfCnzMGg8WvKzwtwTk0GD3cklbTUVuGQtGfA,30799
21
- mcp_agent/core/agent_types.py,sha256=dVOImGJY5xbDFpzLk2Ib4daFsqnm7j06fJN6l34Zwg4,1255
22
- mcp_agent/core/agent_utils.py,sha256=QMvwmxZyCqYhBzSyL9xARsxTuwdmlyjQvrPpsH36HnQ,1888
23
- mcp_agent/core/decorators.py,sha256=SoUSctM_EdaRUlo4y1bT282TWk7eyLC-WhOjOzLZuic,16157
24
- mcp_agent/core/enhanced_prompt.py,sha256=bykUEnnc1CEWODJwXvl4VGfCtrJPtVXU0D4mUglJK7A,18827
25
- mcp_agent/core/error_handling.py,sha256=xoyS2kLe0eG0bj2eSJCJ2odIhGUve2SbDR7jP-A-uRw,624
26
- mcp_agent/core/exceptions.py,sha256=a2-JGRwFFRoQEPuAq0JC5PhAJ5TO3xVJfdS4-VN29cw,2225
27
- mcp_agent/core/factory.py,sha256=6f05_vtWjf-BgVQtHU-KNRYZWRPj8zOCqUiXENWooBY,19080
28
- mcp_agent/core/fastagent.py,sha256=jJmO0DryFGwSkse_3q5Ll-5XONDvj7k_Oeb-ETBKFkA,19620
29
- mcp_agent/core/mcp_content.py,sha256=Q-VqghkHzUht1CcWKFdyVkww9-4vAWU2PfK9PPiaXzQ,6846
30
- mcp_agent/core/prompt.py,sha256=R-X3kptu3ehV_SQeiGnP6F9HMN-92I8e73gnkQ1tDVs,4317
31
- mcp_agent/core/proxies.py,sha256=qsIqyJgiIh-b9ehHiZrM39YutQFJPHaHO14GOMFE1KI,10289
32
- mcp_agent/core/request_params.py,sha256=Ewu9TihgJ3SZWFOXLG4gA-BMdCeZsdaRZl4dXz58K1o,1112
33
- mcp_agent/core/types.py,sha256=AM6l0suJp0vtX7H58HFGelAuEzSMU1kTwVW3uC0CNvM,827
34
- mcp_agent/core/validation.py,sha256=1UL-jtV1THdg7-45a--R9frQZSMqwX21nJ9phkz9bKc,8273
35
- mcp_agent/eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- mcp_agent/executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- mcp_agent/executor/decorator_registry.py,sha256=eONv5WvIcjKd43jVqeP7iB2EkAK-ErhdmXt6ogN0K_w,3848
38
- mcp_agent/executor/executor.py,sha256=aq3AguLP4pkPz7JPqszhd0REIIsiKqpi4AfZmjPKZdM,9613
39
- mcp_agent/executor/task_registry.py,sha256=av8e7cIGOfkvWwVPSwGbaYHQPTRdBQh9xw3GkjJxg9o,1240
40
- mcp_agent/executor/temporal.py,sha256=U-wyltgWlVmzJoyivT6rR0Z1U3S6TbMXpeCxyuXakoM,15312
41
- mcp_agent/executor/workflow.py,sha256=lA6r7PNEvxCVFHp4XkEJkaR0QCTf-J6iw9JwNx-tzNY,6727
42
- mcp_agent/executor/workflow_signal.py,sha256=3PWwSgXhz3PhkA8SRX3u0BDVoSlQqRGqC9d1qLC25vE,11210
43
- mcp_agent/human_input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- mcp_agent/human_input/handler.py,sha256=BTZroDkHRvknSfYcTs60NerE4lJY6ROpoIMjAmfSqYY,3197
45
- mcp_agent/human_input/types.py,sha256=ZvuDHvI0-wO2tFoS0bzrv8U5B83zYdxAG7g9G9jCxug,1489
46
- mcp_agent/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- mcp_agent/logging/events.py,sha256=qfYJnrqgXdujV-nl-iOwBEBh6HMraowBI4zeAWPPU4A,3461
48
- mcp_agent/logging/json_serializer.py,sha256=pa_mf0i0YKpLsGq3THuITFUdAbmae-dv1OPOLbcS0to,5782
49
- mcp_agent/logging/listeners.py,sha256=1DOc0CvAE6pFxOljfZqs2TGgF50sZZGMDt4Gm_PAjWo,6551
50
- mcp_agent/logging/logger.py,sha256=Tr009BnfGUKuZcdinnSin0Z_zIsfDNGdcnamw2rDHRQ,10604
51
- mcp_agent/logging/rich_progress.py,sha256=IEVFdFGA0nwg6pSt9Ydni5LCNYZZPKYMe-6DCi9pO4Y,4851
52
- mcp_agent/logging/tracing.py,sha256=jQivxKYl870oXakmyUk7TXuTQSvsIzpHwZlSQfy4b0c,5203
53
- mcp_agent/logging/transport.py,sha256=pcAKd-2sk1jPZ2j154gxd0HrKqPndhotHLOyUydinBU,17183
54
- mcp_agent/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- mcp_agent/mcp/gen_client.py,sha256=D92Yo088CAeuWG6M82Vlkq0H8igUTw9SwwOQinZZCkg,3052
56
- mcp_agent/mcp/interfaces.py,sha256=xkXSwW7XBhr5CmwXkVLZqKGcQ7iG9S9A9fakoXopYzw,5555
57
- mcp_agent/mcp/mcp_activity.py,sha256=CajXCFWZ2cKEX9s4-HfNVAj471ePTVs4NOkvmIh65tE,592
58
- mcp_agent/mcp/mcp_agent_client_session.py,sha256=2YgbpdTAJ3uCQY182maYXf3bndYWZjBNmlGJ6r7rexU,4157
59
- mcp_agent/mcp/mcp_agent_server.py,sha256=xP09HZTeguJi4Fq0p3fjLBP55uSYe5AdqM90xCgn9Ho,1639
60
- mcp_agent/mcp/mcp_aggregator.py,sha256=vHHwIAso0C4KDD7myJhGZJXktr5op9hamkUgKqI2EU4,37924
61
- mcp_agent/mcp/mcp_connection_manager.py,sha256=PdLia-rxbhUdAdEnW7TQbkf1qeI9RR3xhQw1j11Bi6o,13612
62
- mcp_agent/mcp/mime_utils.py,sha256=difepNR_gpb4MpMLkBRAoyhDk-AjXUHTiqKvT_VwS1o,1805
63
- mcp_agent/mcp/prompt_message_multipart.py,sha256=U7IN0JStmy26akTXcqE4x90oWzm8xs1qa0VeKIyPKmE,1962
64
- mcp_agent/mcp/prompt_serialization.py,sha256=StcXV7V4fqqtCmOCXGCyYXx5vpwNhL2xr3RG_awwdqI,16056
65
- mcp_agent/mcp/resource_utils.py,sha256=G9IBWyasxKKcbq3T_fSpM6mHE8PjBargEdfQnBPrkZY,6650
66
- mcp_agent/mcp/sampling.py,sha256=1yg7f9q9bvxJfbY1efLePwL353XGN8ITi3KdP41uve8,4514
67
- mcp_agent/mcp/stdio.py,sha256=fZr9yVqPvmPC8pkaf95rZtw0uD8BGND0UI_cUYyuSsE,4478
68
- mcp_agent/mcp/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- mcp_agent/mcp/prompts/__main__.py,sha256=gr1Tdz9fcK0EXjEuZg_BOnKUmvhYq5AH2lFZicVyNb0,237
70
- mcp_agent/mcp/prompts/prompt_server.py,sha256=6K4FeKNW_JApWUNB055gl8UnWyC1mvtl_kPEvgUnPjk,17348
71
- mcp_agent/mcp/prompts/prompt_template.py,sha256=NDnSVA0W1wayZHCVx27lfuVPoxlAz-FfBwiCEQG9Ixk,16324
72
- mcp_agent/mcp_server/__init__.py,sha256=zBU51ITHIEPScd9nRafnhEddsWqXRPAAvHhkrbRI2_4,155
73
- mcp_agent/mcp_server/agent_server.py,sha256=SUBggPyrzWtBRUC5xIMpCxu6ei-6Vah3q9Si12BQ-zY,4444
74
- mcp_agent/resources/examples/data-analysis/analysis-campaign.py,sha256=EG-HhaDHltZ4hHAqhgfX_pHM2wem48aYhSIKJxyWHKc,7269
75
- mcp_agent/resources/examples/data-analysis/analysis.py,sha256=5zLoioZQNKUfXt1EXLrGX3TU06-0N06-L9Gtp9BIr6k,2611
76
- mcp_agent/resources/examples/data-analysis/fastagent.config.yaml,sha256=ini94PHyJCfgpjcjHKMMbGuHs6LIj46F1NwY0ll5HVk,1609
77
- mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv,sha256=pcMeOL1_r8m8MziE6xgbBrQbjl5Ijo98yycZn7O-dlk,227977
78
- mcp_agent/resources/examples/internal/agent.py,sha256=orShmYKkrjMc7qa3ZtfzoO80uOClZaPaw2Wvc4_FIH8,406
79
- mcp_agent/resources/examples/internal/fastagent.config.yaml,sha256=U2s0Asc06wC04FstKnBMeB3J5gIa3xa-Rao-1-74XTk,1935
80
- mcp_agent/resources/examples/internal/job.py,sha256=WEKIAANMEAuKr13__rYf3PqJeTAsNB_kqYqbqVYQlUM,4093
81
- mcp_agent/resources/examples/internal/prompt_category.py,sha256=b3tjkfrVIW1EPoDjr4mG87wlZ7D0Uju9eg6asXAYYpI,551
82
- mcp_agent/resources/examples/internal/prompt_sizing.py,sha256=UtQ_jvwS4yMh80PHhUQXJ9WXk-fqNYlqUMNTNkZosKM,2003
83
- mcp_agent/resources/examples/internal/sizer.py,sha256=RBq1qhYVKF2_qtRdvpKpRI3XIFpZ4eyBzhVjnlip-P8,356
84
- mcp_agent/resources/examples/internal/social.py,sha256=Cot2lg3PLhLm13gPdVFvFEN28-mm6x3-jHu2YsV4N3s,1707
85
- mcp_agent/resources/examples/mcp_researcher/researcher-eval.py,sha256=kNPjIU-JwE0oIBQKwhv6lZsUF_SPtYVkiEEbY1ZVZxk,1807
86
- mcp_agent/resources/examples/prompting/__init__.py,sha256=2GSrs9MSDIKo-uDrUI0O311F0UH0RW02ZNdvItJzjfI,50
87
- mcp_agent/resources/examples/prompting/agent.py,sha256=gG2jQnRibO8OmljoFQAs9xxhCyHLCkVxJxQkfF7ykfY,607
88
- mcp_agent/resources/examples/prompting/fastagent.config.yaml,sha256=UR6LtCpeSIzkHsCrHJW1z-wE7AgmgKozS_IYcfcSAkc,1270
89
- mcp_agent/resources/examples/prompting/image_server.py,sha256=-6YWtzS-K5ofHtdoOk4uC3ZBFUyVELT9Fdck1RptcWg,1711
90
- mcp_agent/resources/examples/researcher/fastagent.config.yaml,sha256=bNOnID9OgdSBTUEhdimKB8LjaZLa1B6igmp-nxx8nr4,2271
91
- mcp_agent/resources/examples/researcher/researcher-eval.py,sha256=0qDjxun7CZ1cZ8JTa6G1v1XcpwGSSL6-qAZ35yI1-K4,1818
92
- mcp_agent/resources/examples/researcher/researcher-imp.py,sha256=Xfw2YAyjXd47pQz-uljgG5ii5x77fVuCP2XCivRDI48,7885
93
- mcp_agent/resources/examples/researcher/researcher.py,sha256=iE6hlwoJVCgCvJfSPYrBvoXKFqkvXah8NHSHX5EgTxA,1431
94
- mcp_agent/resources/examples/workflows/agent_build.py,sha256=ioG4X8IbR8wwja8Zdncsk8YAu0VD2Xt1Vhr7saNJCZQ,2855
95
- mcp_agent/resources/examples/workflows/chaining.py,sha256=1G_0XBcFkSJCOXb6N_iXWlSc_oGAlhENR0k_CN1vJKI,1208
96
- mcp_agent/resources/examples/workflows/evaluator.py,sha256=3XmW1mjImlaWb0c5FWHYS9yP8nVGTbEdJySAoWXwrDg,3109
97
- mcp_agent/resources/examples/workflows/fastagent.config.yaml,sha256=k2AiapOcK42uqG2nWDVvnSLqN4okQIQZK0FTbZufBpY,809
98
- mcp_agent/resources/examples/workflows/human_input.py,sha256=c8cBdLEPbaMXddFwsfN3Z7RFs5PZXsdrjANfvq1VTPM,605
99
- mcp_agent/resources/examples/workflows/orchestrator.py,sha256=2nkRkpMgi4V-M6fwcpipQUImf0nZoGf4zfVllfojsz8,2596
100
- mcp_agent/resources/examples/workflows/parallel.py,sha256=pLbQrtXfbdYqMVddxtg5dZnBnm5Wo2mXlIa1Vf2F1FQ,3096
101
- mcp_agent/resources/examples/workflows/router.py,sha256=J1yTAimFY53jcyd21cq1XAZvtOxnNsmtSjSp13M5EgE,1668
102
- mcp_agent/resources/examples/workflows/sse.py,sha256=tdmmh7p87YNfcF_fCq3evAmc1Nek0oY0YOqLRKBLqKg,570
103
- mcp_agent/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
- mcp_agent/telemetry/usage_tracking.py,sha256=ePujKMSjPxB7k6X34DGaVlnsV1728mcWZq38OqahiCU,501
105
- mcp_agent/ui/console_display.py,sha256=rT017esFdxazGDIt1qxY-LdqIK677ulTMNopEQBYKfo,9718
106
- mcp_agent/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- mcp_agent/workflows/embedding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- mcp_agent/workflows/embedding/embedding_base.py,sha256=-c20ggQ8s7XhMxRX-WEhOgHE7vP_Ca6wtdoXlse-AAA,1681
109
- mcp_agent/workflows/embedding/embedding_cohere.py,sha256=OKTJvKD_uEafd4c2uhR5tBjprea1nyvlJOO-3FDqOnk,1540
110
- mcp_agent/workflows/embedding/embedding_openai.py,sha256=dntjJ5P-FSMGYuyPZC8MuCU_ehwjXw9wDfzZZuSQN1E,1480
111
- mcp_agent/workflows/evaluator_optimizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
- mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py,sha256=Bp3mQddGYY71sJDcgIxnmqDMcjzs9DWZHQ7P6IEp3q0,18129
113
- mcp_agent/workflows/intent_classifier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- mcp_agent/workflows/intent_classifier/intent_classifier_base.py,sha256=zTbOmq6EY_abOlme4zl28HM4RWNNS6bbHl3tF7SshJ0,4004
115
- mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py,sha256=_bWZGukc_q9LdA_Q18UoAMSzhN8tt4K_bRHNUhy7Crw,3997
116
- mcp_agent/workflows/intent_classifier/intent_classifier_embedding_cohere.py,sha256=ufG34dHmgVlHdvUtC3yUXN9NYow9G9I15GzuTSI8A2s,1540
117
- mcp_agent/workflows/intent_classifier/intent_classifier_embedding_openai.py,sha256=br_ZmeCAtOLgyFJnyVVcRe0pyJGO0pxBsMsZrhRnkHw,1540
118
- mcp_agent/workflows/intent_classifier/intent_classifier_llm.py,sha256=WSLUv2Casb2KucDjW6fJ1bLFzT6tRBUamUPArtv2WCE,5177
119
- mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py,sha256=Hp4454IniWFxV4ml50Ml8ip9rS1La5FBn5pd7vm1FHA,1964
120
- mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py,sha256=zj76WlTYnSCYjBQ_IDi5vFBQGmNwYaoUq1rT730sY98,1940
121
- mcp_agent/workflows/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
- mcp_agent/workflows/llm/anthropic_utils.py,sha256=OFmsVmDQ22880duDWQrEeQEB47xtvujSYJ-fNw1lhi0,3712
123
- mcp_agent/workflows/llm/augmented_llm.py,sha256=cMNwDp-THL6NON0-J0-IuwxlmHoxI8iIdOVIx3v31Rg,27835
124
- mcp_agent/workflows/llm/augmented_llm_anthropic.py,sha256=WedsOlyh4Gc8omRa0SntvSW83qXje_vKEv_w7Owplzw,20165
125
- mcp_agent/workflows/llm/augmented_llm_openai.py,sha256=65TLrvTiJCiNb2jn_1Gw6nIfD83IFwMK6HCqVXoUQUo,21027
126
- mcp_agent/workflows/llm/augmented_llm_passthrough.py,sha256=2Qx19a24ntAdPUevHbO7RFUtXD13ne4VJtSco6WEtwg,8934
127
- mcp_agent/workflows/llm/augmented_llm_playback.py,sha256=5ypv3owJU6pscktqg9tkLQVKNgaA50e8OWmC1hAhrtE,4328
128
- mcp_agent/workflows/llm/model_factory.py,sha256=IR8giuZ_5voBnTIpEwvpLtR1tCIdxF5K9wDnWD9ezfM,7680
129
- mcp_agent/workflows/llm/openai_utils.py,sha256=GGkJF-nazA4HWrlmMKKLf0qSfl2gbSqo-rbMDoJs5mE,1895
130
- mcp_agent/workflows/llm/prompt_utils.py,sha256=EicXAGMLBUADRfyrsJIFF_7cDhDAccKb-ow7dAblGAA,4839
131
- mcp_agent/workflows/llm/sampling_converter.py,sha256=0OauvVYCfHi9v57uvJ35IE91mULVAQa7tb_Q8nCo0A8,3653
132
- mcp_agent/workflows/llm/sampling_format_converter.py,sha256=mTgmSzHye8WkOUkw-zZv9gSEV4cS_LEykVnZrUwR9x0,738
133
- mcp_agent/workflows/llm/providers/__init__.py,sha256=qirdqAKIbw3BY1NBdGytH9tvpjOu0QNOqKAG2deD_U4,285
134
- mcp_agent/workflows/llm/providers/multipart_converter_anthropic.py,sha256=5hEl_g94-uEfdfYfuLYz0A16zBwkvfDE18pkvugNwJg,16501
135
- mcp_agent/workflows/llm/providers/multipart_converter_openai.py,sha256=Mzz4fZFgpAGAOobRHl-plpCHOSHOg2WY2Mf8n-wyeMA,16934
136
- mcp_agent/workflows/llm/providers/openai_multipart.py,sha256=RKkwssszD6jJpZ-Hj875uu5rbePrwzN7v43Ec69Ziwg,7566
137
- mcp_agent/workflows/llm/providers/sampling_converter_anthropic.py,sha256=fJuVeAv1Rdnpb59wjxEs1YbZDIeuVWh3QLnKQQ9k3MI,1628
138
- mcp_agent/workflows/llm/providers/sampling_converter_openai.py,sha256=cjX-IlBsvsCpP2O3_Pk8I-upwjqsk05tWyZXQagfkdM,849
139
- mcp_agent/workflows/orchestrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
- mcp_agent/workflows/orchestrator/orchestrator.py,sha256=s8-_4CG4oRnvYAwUqqyevGLpy21IYtcNtsd_SbRZ8Fk,22125
141
- mcp_agent/workflows/orchestrator/orchestrator_models.py,sha256=1ldku1fYA_hu2F6K4l2C96mAdds05VibtSzSQrGm3yw,7321
142
- mcp_agent/workflows/orchestrator/orchestrator_prompts.py,sha256=EXKEI174sshkZyPPEnWbwwNafzSPuA39MXL7iqG9cWc,9106
143
- mcp_agent/workflows/parallel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
- mcp_agent/workflows/parallel/fan_in.py,sha256=EivpUL5-qftctws-tlfwmYS1QeSwr07POIbBUbwvwOk,13184
145
- mcp_agent/workflows/parallel/fan_out.py,sha256=J-yezgjzAWxfueW_Qcgwoet4PFDRIh0h4m48lIbFA4c,7023
146
- mcp_agent/workflows/parallel/parallel_llm.py,sha256=fk88DhBRAI41Ph0spe_yBtrMTSj0g47yoA-ozuOxZhE,5807
147
- mcp_agent/workflows/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
- mcp_agent/workflows/router/router_base.py,sha256=yvb-vwNLcLDJAATJjMyo56dlmFldbRtbKXt63Zj30UI,14224
149
- mcp_agent/workflows/router/router_embedding.py,sha256=wEU49li9OqTX-Xucm0HDUFLZjlND1WuewOcQVAo0s2E,7944
150
- mcp_agent/workflows/router/router_embedding_cohere.py,sha256=aKZVzzQfBuz0by9k0zWLAA0Db_unDIMYL4ynVzzx8C4,1975
151
- mcp_agent/workflows/router/router_embedding_openai.py,sha256=KqW2IFLdQoAJ2lIz1X18WQJFjXF-YSFSTtsqVnp1JeI,1975
152
- mcp_agent/workflows/router/router_llm.py,sha256=msXmp_PPPX-2fZF8F_bYjGId2CmmaBe4DSHKNNggcnU,10942
153
- mcp_agent/workflows/swarm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
- mcp_agent/workflows/swarm/swarm.py,sha256=-lAIeSWDqbGHGRPTvjiP9nIKWvxxy9DAojl9yQzO1Pw,11050
155
- mcp_agent/workflows/swarm/swarm_anthropic.py,sha256=pW8zFx5baUWGd5Vw3nIDF2oVOOGNorij4qvGJKdYPcs,1624
156
- mcp_agent/workflows/swarm/swarm_openai.py,sha256=wfteywvAGkT5bLmIxX_StHJq8144whYmCRnJASAjOes,1596
157
- fast_agent_mcp-0.1.12.dist-info/METADATA,sha256=jdLjF7CHODEDoDvHWxTEdtzAjZGUR3eSyRay07jguXE,29678
158
- fast_agent_mcp-0.1.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
159
- fast_agent_mcp-0.1.12.dist-info/entry_points.txt,sha256=qPM7vwtN1_KmP3dXehxgiCxUBHtqP7yfenZigztvY-w,226
160
- fast_agent_mcp-0.1.12.dist-info/licenses/LICENSE,sha256=cN3FxDURL9XuzE5mhK9L2paZo82LTfjwCYVT7e3j0e4,10939
161
- fast_agent_mcp-0.1.12.dist-info/RECORD,,