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.
- {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/METADATA +3 -4
- fast_agent_mcp-0.2.0.dist-info/RECORD +123 -0
- mcp_agent/__init__.py +75 -0
- mcp_agent/agents/agent.py +61 -415
- mcp_agent/agents/base_agent.py +522 -0
- mcp_agent/agents/workflow/__init__.py +1 -0
- mcp_agent/agents/workflow/chain_agent.py +173 -0
- mcp_agent/agents/workflow/evaluator_optimizer.py +362 -0
- mcp_agent/agents/workflow/orchestrator_agent.py +591 -0
- mcp_agent/{workflows/orchestrator → agents/workflow}/orchestrator_models.py +11 -21
- mcp_agent/agents/workflow/parallel_agent.py +182 -0
- mcp_agent/agents/workflow/router_agent.py +307 -0
- mcp_agent/app.py +15 -19
- mcp_agent/cli/commands/bootstrap.py +19 -38
- mcp_agent/cli/commands/config.py +4 -4
- mcp_agent/cli/commands/setup.py +7 -14
- mcp_agent/cli/main.py +7 -10
- mcp_agent/cli/terminal.py +3 -3
- mcp_agent/config.py +25 -40
- mcp_agent/context.py +12 -21
- mcp_agent/context_dependent.py +3 -5
- mcp_agent/core/agent_types.py +10 -7
- mcp_agent/core/direct_agent_app.py +179 -0
- mcp_agent/core/direct_decorators.py +443 -0
- mcp_agent/core/direct_factory.py +476 -0
- mcp_agent/core/enhanced_prompt.py +23 -55
- mcp_agent/core/exceptions.py +8 -8
- mcp_agent/core/fastagent.py +145 -371
- mcp_agent/core/interactive_prompt.py +424 -0
- mcp_agent/core/mcp_content.py +17 -17
- mcp_agent/core/prompt.py +6 -9
- mcp_agent/core/request_params.py +6 -3
- mcp_agent/core/validation.py +92 -18
- mcp_agent/executor/decorator_registry.py +9 -17
- mcp_agent/executor/executor.py +8 -17
- mcp_agent/executor/task_registry.py +2 -4
- mcp_agent/executor/temporal.py +19 -41
- mcp_agent/executor/workflow.py +3 -5
- mcp_agent/executor/workflow_signal.py +15 -21
- mcp_agent/human_input/handler.py +4 -7
- mcp_agent/human_input/types.py +2 -3
- mcp_agent/llm/__init__.py +2 -0
- mcp_agent/llm/augmented_llm.py +450 -0
- mcp_agent/llm/augmented_llm_passthrough.py +162 -0
- mcp_agent/llm/augmented_llm_playback.py +83 -0
- mcp_agent/llm/memory.py +103 -0
- mcp_agent/{workflows/llm → llm}/model_factory.py +22 -16
- mcp_agent/{workflows/llm → llm}/prompt_utils.py +1 -3
- mcp_agent/llm/providers/__init__.py +8 -0
- mcp_agent/{workflows/llm → llm/providers}/anthropic_utils.py +8 -25
- mcp_agent/{workflows/llm → llm/providers}/augmented_llm_anthropic.py +56 -194
- mcp_agent/llm/providers/augmented_llm_deepseek.py +53 -0
- mcp_agent/{workflows/llm → llm/providers}/augmented_llm_openai.py +99 -190
- mcp_agent/{workflows/llm → llm}/providers/multipart_converter_anthropic.py +72 -71
- mcp_agent/{workflows/llm → llm}/providers/multipart_converter_openai.py +65 -71
- mcp_agent/{workflows/llm → llm}/providers/openai_multipart.py +16 -44
- mcp_agent/{workflows/llm → llm/providers}/openai_utils.py +4 -4
- mcp_agent/{workflows/llm → llm}/providers/sampling_converter_anthropic.py +9 -11
- mcp_agent/{workflows/llm → llm}/providers/sampling_converter_openai.py +8 -12
- mcp_agent/{workflows/llm → llm}/sampling_converter.py +3 -31
- mcp_agent/llm/sampling_format_converter.py +37 -0
- mcp_agent/logging/events.py +1 -5
- mcp_agent/logging/json_serializer.py +7 -6
- mcp_agent/logging/listeners.py +20 -23
- mcp_agent/logging/logger.py +17 -19
- mcp_agent/logging/rich_progress.py +10 -8
- mcp_agent/logging/tracing.py +4 -6
- mcp_agent/logging/transport.py +22 -22
- mcp_agent/mcp/gen_client.py +1 -3
- mcp_agent/mcp/interfaces.py +117 -110
- mcp_agent/mcp/logger_textio.py +97 -0
- mcp_agent/mcp/mcp_agent_client_session.py +7 -7
- mcp_agent/mcp/mcp_agent_server.py +8 -8
- mcp_agent/mcp/mcp_aggregator.py +102 -143
- mcp_agent/mcp/mcp_connection_manager.py +20 -27
- mcp_agent/mcp/prompt_message_multipart.py +68 -16
- mcp_agent/mcp/prompt_render.py +77 -0
- mcp_agent/mcp/prompt_serialization.py +30 -48
- mcp_agent/mcp/prompts/prompt_constants.py +18 -0
- mcp_agent/mcp/prompts/prompt_helpers.py +327 -0
- mcp_agent/mcp/prompts/prompt_load.py +109 -0
- mcp_agent/mcp/prompts/prompt_server.py +155 -195
- mcp_agent/mcp/prompts/prompt_template.py +35 -66
- mcp_agent/mcp/resource_utils.py +7 -14
- mcp_agent/mcp/sampling.py +17 -17
- mcp_agent/mcp_server/agent_server.py +13 -17
- mcp_agent/mcp_server_registry.py +13 -22
- mcp_agent/resources/examples/{workflows → in_dev}/agent_build.py +3 -2
- mcp_agent/resources/examples/in_dev/slides.py +110 -0
- mcp_agent/resources/examples/internal/agent.py +6 -3
- mcp_agent/resources/examples/internal/fastagent.config.yaml +8 -2
- mcp_agent/resources/examples/internal/job.py +2 -1
- mcp_agent/resources/examples/internal/prompt_category.py +1 -1
- mcp_agent/resources/examples/internal/prompt_sizing.py +3 -5
- mcp_agent/resources/examples/internal/sizer.py +2 -1
- mcp_agent/resources/examples/internal/social.py +2 -1
- mcp_agent/resources/examples/prompting/agent.py +2 -1
- mcp_agent/resources/examples/prompting/image_server.py +4 -8
- mcp_agent/resources/examples/prompting/work_with_image.py +19 -0
- mcp_agent/ui/console_display.py +16 -20
- fast_agent_mcp-0.1.12.dist-info/RECORD +0 -161
- mcp_agent/core/agent_app.py +0 -646
- mcp_agent/core/agent_utils.py +0 -71
- mcp_agent/core/decorators.py +0 -455
- mcp_agent/core/factory.py +0 -463
- mcp_agent/core/proxies.py +0 -269
- mcp_agent/core/types.py +0 -24
- mcp_agent/eval/__init__.py +0 -0
- mcp_agent/mcp/stdio.py +0 -111
- mcp_agent/resources/examples/data-analysis/analysis-campaign.py +0 -188
- mcp_agent/resources/examples/data-analysis/analysis.py +0 -65
- mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -41
- mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -1471
- mcp_agent/resources/examples/mcp_researcher/researcher-eval.py +0 -53
- mcp_agent/resources/examples/researcher/fastagent.config.yaml +0 -66
- mcp_agent/resources/examples/researcher/researcher-eval.py +0 -53
- mcp_agent/resources/examples/researcher/researcher-imp.py +0 -190
- mcp_agent/resources/examples/researcher/researcher.py +0 -38
- mcp_agent/resources/examples/workflows/chaining.py +0 -44
- mcp_agent/resources/examples/workflows/evaluator.py +0 -78
- mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -24
- mcp_agent/resources/examples/workflows/human_input.py +0 -25
- mcp_agent/resources/examples/workflows/orchestrator.py +0 -73
- mcp_agent/resources/examples/workflows/parallel.py +0 -78
- mcp_agent/resources/examples/workflows/router.py +0 -53
- mcp_agent/resources/examples/workflows/sse.py +0 -23
- mcp_agent/telemetry/__init__.py +0 -0
- mcp_agent/telemetry/usage_tracking.py +0 -18
- mcp_agent/workflows/__init__.py +0 -0
- mcp_agent/workflows/embedding/__init__.py +0 -0
- mcp_agent/workflows/embedding/embedding_base.py +0 -61
- mcp_agent/workflows/embedding/embedding_cohere.py +0 -49
- mcp_agent/workflows/embedding/embedding_openai.py +0 -46
- mcp_agent/workflows/evaluator_optimizer/__init__.py +0 -0
- mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py +0 -481
- mcp_agent/workflows/intent_classifier/__init__.py +0 -0
- mcp_agent/workflows/intent_classifier/intent_classifier_base.py +0 -120
- mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py +0 -134
- mcp_agent/workflows/intent_classifier/intent_classifier_embedding_cohere.py +0 -45
- mcp_agent/workflows/intent_classifier/intent_classifier_embedding_openai.py +0 -45
- mcp_agent/workflows/intent_classifier/intent_classifier_llm.py +0 -161
- mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py +0 -60
- mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py +0 -60
- mcp_agent/workflows/llm/__init__.py +0 -0
- mcp_agent/workflows/llm/augmented_llm.py +0 -753
- mcp_agent/workflows/llm/augmented_llm_passthrough.py +0 -241
- mcp_agent/workflows/llm/augmented_llm_playback.py +0 -109
- mcp_agent/workflows/llm/providers/__init__.py +0 -8
- mcp_agent/workflows/llm/sampling_format_converter.py +0 -22
- mcp_agent/workflows/orchestrator/__init__.py +0 -0
- mcp_agent/workflows/orchestrator/orchestrator.py +0 -578
- mcp_agent/workflows/parallel/__init__.py +0 -0
- mcp_agent/workflows/parallel/fan_in.py +0 -350
- mcp_agent/workflows/parallel/fan_out.py +0 -187
- mcp_agent/workflows/parallel/parallel_llm.py +0 -166
- mcp_agent/workflows/router/__init__.py +0 -0
- mcp_agent/workflows/router/router_base.py +0 -368
- mcp_agent/workflows/router/router_embedding.py +0 -240
- mcp_agent/workflows/router/router_embedding_cohere.py +0 -59
- mcp_agent/workflows/router/router_embedding_openai.py +0 -59
- mcp_agent/workflows/router/router_llm.py +0 -320
- mcp_agent/workflows/swarm/__init__.py +0 -0
- mcp_agent/workflows/swarm/swarm.py +0 -320
- mcp_agent/workflows/swarm/swarm_anthropic.py +0 -42
- mcp_agent/workflows/swarm/swarm_openai.py +0 -41
- {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/entry_points.txt +0 -0
- {fast_agent_mcp-0.1.12.dist-info → fast_agent_mcp-0.2.0.dist-info}/licenses/LICENSE +0 -0
- /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=["
|
10
|
-
|
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: "
|
52
|
-
args: ["
|
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,6 +1,6 @@
|
|
1
|
-
from pydantic import Field
|
2
1
|
from mcp.server.fastmcp import FastMCP
|
3
|
-
from mcp.server.fastmcp.prompts.base import
|
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
|
10
|
-
from mcp.types import
|
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
|
-
|
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())
|
mcp_agent/ui/console_display.py
CHANGED
@@ -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
|
-
|
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=
|
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,,
|