fast-agent-mcp 0.0.16__py3-none-any.whl → 0.1.1__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.0.16.dist-info → fast_agent_mcp-0.1.1.dist-info}/METADATA +30 -13
- {fast_agent_mcp-0.0.16.dist-info → fast_agent_mcp-0.1.1.dist-info}/RECORD +21 -20
- mcp_agent/cli/commands/bootstrap.py +1 -1
- mcp_agent/cli/commands/setup.py +4 -1
- mcp_agent/cli/main.py +13 -3
- mcp_agent/core/agent_app.py +1 -1
- mcp_agent/core/enhanced_prompt.py +3 -3
- mcp_agent/core/fastagent.py +96 -49
- mcp_agent/resources/examples/data-analysis/analysis-campaign.py +188 -0
- mcp_agent/resources/examples/data-analysis/analysis.py +36 -32
- mcp_agent/resources/examples/workflows/agent_build.py +48 -28
- mcp_agent/resources/examples/workflows/evaluator.py +3 -1
- mcp_agent/resources/examples/workflows/orchestrator.py +2 -2
- mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py +120 -63
- mcp_agent/workflows/llm/augmented_llm_anthropic.py +4 -3
- mcp_agent/workflows/orchestrator/orchestrator.py +170 -70
- mcp_agent/workflows/orchestrator/orchestrator_models.py +3 -0
- mcp_agent/workflows/orchestrator/orchestrator_prompts.py +48 -0
- {fast_agent_mcp-0.0.16.dist-info → fast_agent_mcp-0.1.1.dist-info}/WHEEL +0 -0
- {fast_agent_mcp-0.0.16.dist-info → fast_agent_mcp-0.1.1.dist-info}/entry_points.txt +0 -0
- {fast_agent_mcp-0.0.16.dist-info → fast_agent_mcp-0.1.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: fast-agent-mcp
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.1.1
|
4
4
|
Summary: Define, Prompt and Test MCP enabled Agents and Workflows
|
5
5
|
Author-email: Shaun Smith <fastagent@llmindset.co.uk>, Sarmad Qadri <sarmad@lastmileai.dev>
|
6
6
|
License: Apache License
|
@@ -235,7 +235,7 @@ Provides-Extra: temporal
|
|
235
235
|
Requires-Dist: temporalio>=1.8.0; extra == 'temporal'
|
236
236
|
Description-Content-Type: text/markdown
|
237
237
|
|
238
|
-
##
|
238
|
+
## fast-agent
|
239
239
|
|
240
240
|
<p align="center">
|
241
241
|
<a href="https://pypi.org/project/fast-agent-mcp/"><img src="https://img.shields.io/pypi/v/fast-agent-mcp?color=%2334D058&label=pypi" /></a>
|
@@ -257,7 +257,7 @@ Evaluate how different models handle Agent and MCP Server calling tasks, then bu
|
|
257
257
|
|
258
258
|
Prompts and configurations that define your Agent Applications are stored in simple files, with minimal boilerplate, enabling simple management and version control.
|
259
259
|
|
260
|
-
Chat with individual Agents and Components before, during and after workflow execution to tune and diagnose your application.
|
260
|
+
Chat with individual Agents and Components before, during and after workflow execution to tune and diagnose your application. Agents can request human input to get additional context for task completion.
|
261
261
|
|
262
262
|
Simple model selection makes testing Model <-> MCP Server interaction painless. You can read more about the motivation behind this project [here](https://llmindset.co.uk/resources/fast-agent/)
|
263
263
|
|
@@ -391,6 +391,21 @@ This starts an interactive session, which produces a short social media post for
|
|
391
391
|
|
392
392
|
Chains can be incorporated in other workflows, or contain other workflow elements (including other Chains). You can set an `instruction` to precisely describe it's capabilities to other workflow steps if needed.
|
393
393
|
|
394
|
+
### Human Input
|
395
|
+
|
396
|
+
Agents can request Human Input to assist with a task or get additional context:
|
397
|
+
|
398
|
+
```python
|
399
|
+
@fast.agent(
|
400
|
+
instruction="An AI agent that assists with basic tasks. Request Human Input when needed.",
|
401
|
+
human_input=True,
|
402
|
+
)
|
403
|
+
|
404
|
+
await agent("print the next number in the sequence")
|
405
|
+
```
|
406
|
+
|
407
|
+
In the example `human_input.py`, the Agent will prompt the User for additional information to complete the task.
|
408
|
+
|
394
409
|
### Parallel
|
395
410
|
|
396
411
|
The Parallel Workflow sends the same message to multiple Agents simultaneously (`fan-out`), then uses the `fan-in` Agent to process the combined content.
|
@@ -415,9 +430,13 @@ Look at the `parallel.py` workflow example for more examples. If you don't speci
|
|
415
430
|
|
416
431
|
`parallel` is also useful to ensemble ideas from different LLMs.
|
417
432
|
|
433
|
+
When using `parallel` in other workflows, specify an `instruction` to describe its operation.
|
434
|
+
|
418
435
|
### Evaluator-Optimizer
|
419
436
|
|
420
|
-
Evaluator-Optimizers combine 2 agents: one to generate content (the `generator`), and the other to judge that content and provide actionable feedback (the `evaluator`). Messages are sent to the generator first, then the pair run in a loop until either the evaluator is satisfied with the quality, or the maximum number of refinements is reached.
|
437
|
+
Evaluator-Optimizers combine 2 agents: one to generate content (the `generator`), and the other to judge that content and provide actionable feedback (the `evaluator`). Messages are sent to the generator first, then the pair run in a loop until either the evaluator is satisfied with the quality, or the maximum number of refinements is reached. The final result from the Generator is returned.
|
438
|
+
|
439
|
+
If the Generator has `use_history` off, the previous iteration is returned when asking for improvements - otherwise conversational context is used.
|
421
440
|
|
422
441
|
```python
|
423
442
|
@fast.evaluator_optimizer(
|
@@ -432,6 +451,8 @@ async with fast.run() as agent:
|
|
432
451
|
await agent.researcher.send("produce a report on how to make the perfect espresso")
|
433
452
|
```
|
434
453
|
|
454
|
+
When used in a workflow, it returns the last `generator` message as the result.
|
455
|
+
|
435
456
|
See the `evaluator.py` workflow example, or `fast-agent bootstrap researcher` for a more complete example.
|
436
457
|
|
437
458
|
### Router
|
@@ -458,7 +479,7 @@ Given a complex task, the Orchestrator uses an LLM to generate a plan to divide
|
|
458
479
|
)
|
459
480
|
```
|
460
481
|
|
461
|
-
See `orchestrator.py`
|
482
|
+
See the `orchestrator.py` or `agent_build.py` workflow example.
|
462
483
|
|
463
484
|
## Agent Features
|
464
485
|
|
@@ -540,7 +561,7 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
|
|
540
561
|
name="route", # name of the router
|
541
562
|
agents=["agent1", "agent2", "agent3"], # list of agent names router can delegate to
|
542
563
|
model="o3-mini.high", # specify routing model
|
543
|
-
use_history=
|
564
|
+
use_history=False, # router maintains conversation history
|
544
565
|
human_input=False, # whether router can request human input
|
545
566
|
)
|
546
567
|
```
|
@@ -553,9 +574,10 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
|
|
553
574
|
instruction="instruction", # base instruction for the orchestrator
|
554
575
|
agents=["agent1", "agent2"], # list of agent names this orchestrator can use
|
555
576
|
model="o3-mini.high", # specify orchestrator planning model
|
556
|
-
use_history=False, # orchestrator doesn't maintain chat history
|
577
|
+
use_history=False, # orchestrator doesn't maintain chat history (no effect).
|
557
578
|
human_input=False, # whether orchestrator can request human input
|
558
579
|
plan_type="full", # planning approach: "full" or "iterative"
|
580
|
+
max_iterations=5, # maximum number of full plan attempts, or iterations
|
559
581
|
)
|
560
582
|
```
|
561
583
|
|
@@ -570,6 +592,7 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
|
|
570
592
|
|
571
593
|
### llmindset.co.uk fork:
|
572
594
|
|
595
|
+
- Overhaul of Eval/Opt for Conversation Management
|
573
596
|
- Remove instructor use for Orchestrator
|
574
597
|
- Improved handling of Parallel/Fan-In and respose option
|
575
598
|
- XML based generated prompts
|
@@ -590,9 +613,3 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
|
|
590
613
|
- Numerous defect fixes
|
591
614
|
|
592
615
|
### Features to add.
|
593
|
-
|
594
|
-
- Chat History Clear.
|
595
|
-
|
596
|
-
```
|
597
|
-
|
598
|
-
```
|
@@ -11,19 +11,19 @@ mcp_agent/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
11
11
|
mcp_agent/agents/agent.py,sha256=losanPSdZXZzmeiX-J6ctOinLlkhNZsxwi3Swr8lnxA,11482
|
12
12
|
mcp_agent/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
mcp_agent/cli/__main__.py,sha256=AVZ7tQFhU_sDOGuUGJq8ujgKtcxsYJBJwHbVaaiRDlI,166
|
14
|
-
mcp_agent/cli/main.py,sha256=
|
14
|
+
mcp_agent/cli/main.py,sha256=DE6EZzspfzHwPK59x8vL4AIDHRQkVQ1Ja70XRGU1IQs,2753
|
15
15
|
mcp_agent/cli/terminal.py,sha256=5fqrKlJvIpKEuvpvZ653OueQSYFFktBEbosjr2ucMUc,1026
|
16
|
-
mcp_agent/cli/commands/bootstrap.py,sha256=
|
16
|
+
mcp_agent/cli/commands/bootstrap.py,sha256=Rmwbuwl52eHfnya7fnwKk2J7nCsHpSh6irka4mBDEnU,10779
|
17
17
|
mcp_agent/cli/commands/config.py,sha256=32YTS5jmsYAs9QzAhjkG70_daAHqOemf4XbZBBSMz6g,204
|
18
|
-
mcp_agent/cli/commands/setup.py,sha256=
|
18
|
+
mcp_agent/cli/commands/setup.py,sha256=_SCpd6_PrixqbSaE72JQ7erIRkZnJGmh_3TvvwSzEiE,6392
|
19
19
|
mcp_agent/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
-
mcp_agent/core/agent_app.py,sha256=
|
20
|
+
mcp_agent/core/agent_app.py,sha256=6U3HLYAJOfyVuUpZVELWT5lOo64-b_sfWp0yn88s7Wo,6085
|
21
21
|
mcp_agent/core/agent_types.py,sha256=yKiMbv9QO2dduq4zXmoMZlOZpXJZhM4oNwIq1-134FE,318
|
22
22
|
mcp_agent/core/agent_utils.py,sha256=yUJ-qvw5TblqqOsB1vj0Qvcz9mass9awPA6UNNvuw0A,1738
|
23
|
-
mcp_agent/core/enhanced_prompt.py,sha256=
|
23
|
+
mcp_agent/core/enhanced_prompt.py,sha256=XraDKdIMW960KXCiMfCEPKDakbf1wHYgvHwD-9CBDi0,13011
|
24
24
|
mcp_agent/core/error_handling.py,sha256=D3HMW5odrbJvaKqcpCGj6eDXrbFcuqYaCZz7fyYiTu4,623
|
25
25
|
mcp_agent/core/exceptions.py,sha256=a2-JGRwFFRoQEPuAq0JC5PhAJ5TO3xVJfdS4-VN29cw,2225
|
26
|
-
mcp_agent/core/fastagent.py,sha256=
|
26
|
+
mcp_agent/core/fastagent.py,sha256=drf11eHH1xCiyS91v_ADWfaV8T9asm_2Vw0NXxjinpc,58730
|
27
27
|
mcp_agent/core/proxies.py,sha256=hXDUpsgGO4xBTIjdUeXj6vULPb8sf55vAFVQh6Ybn60,4411
|
28
28
|
mcp_agent/core/server_validation.py,sha256=_59cn16nNT4HGPwg19HgxMtHK4MsdWYDUw_CuL-5xek,1696
|
29
29
|
mcp_agent/core/types.py,sha256=Zhi9iW7uiOfdpSt9NC0FCtGRFtJPg4mpZPK2aYi7a7M,817
|
@@ -54,7 +54,8 @@ mcp_agent/mcp/mcp_agent_server.py,sha256=xP09HZTeguJi4Fq0p3fjLBP55uSYe5AdqM90xCg
|
|
54
54
|
mcp_agent/mcp/mcp_aggregator.py,sha256=RVsgNnSJ1IPBkqKgF_Gp-Cpv97FVBIdppPey6FRoHB0,14751
|
55
55
|
mcp_agent/mcp/mcp_connection_manager.py,sha256=WLli0w3TVcsszyD9M7zP7vLKPetnQLTf_0PGhvMm9YM,13145
|
56
56
|
mcp_agent/mcp/stdio.py,sha256=tW075R5rQ-UlflXWFKIFDgCbWbuhKqxhiYolWvyEkFs,3985
|
57
|
-
mcp_agent/resources/examples/data-analysis/analysis.py,sha256=
|
57
|
+
mcp_agent/resources/examples/data-analysis/analysis-campaign.py,sha256=EG-HhaDHltZ4hHAqhgfX_pHM2wem48aYhSIKJxyWHKc,7269
|
58
|
+
mcp_agent/resources/examples/data-analysis/analysis.py,sha256=5zLoioZQNKUfXt1EXLrGX3TU06-0N06-L9Gtp9BIr6k,2611
|
58
59
|
mcp_agent/resources/examples/data-analysis/fastagent.config.yaml,sha256=eTKGbjnTHhDTeNRPQvG_fr9OQpEZ5Y9v7X2NyCj0V70,530
|
59
60
|
mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv,sha256=pcMeOL1_r8m8MziE6xgbBrQbjl5Ijo98yycZn7O-dlk,227977
|
60
61
|
mcp_agent/resources/examples/internal/agent.py,sha256=f-jTgYabV3nWCQm0ZP9NtSEWjx3nQbRngzArRufcELg,384
|
@@ -64,12 +65,12 @@ mcp_agent/resources/examples/mcp_researcher/researcher-eval.py,sha256=kNPjIU-JwE
|
|
64
65
|
mcp_agent/resources/examples/researcher/fastagent.config.yaml,sha256=2_VXZneckR6zk6RWzzL-smV_oWmgg4uSkLWqZv8jF0I,1995
|
65
66
|
mcp_agent/resources/examples/researcher/researcher-eval.py,sha256=kNPjIU-JwE0oIBQKwhv6lZsUF_SPtYVkiEEbY1ZVZxk,1807
|
66
67
|
mcp_agent/resources/examples/researcher/researcher.py,sha256=jPRafm7jbpHKkX_dQiYGG3Sw-e1Dm86q-JZT-WZDhM0,1425
|
67
|
-
mcp_agent/resources/examples/workflows/agent_build.py,sha256=
|
68
|
+
mcp_agent/resources/examples/workflows/agent_build.py,sha256=HxsTWkmcFh_X3UhAchvpwp7P4IVCBS-B-hK6e_DuNnM,2748
|
68
69
|
mcp_agent/resources/examples/workflows/chaining.py,sha256=1G_0XBcFkSJCOXb6N_iXWlSc_oGAlhENR0k_CN1vJKI,1208
|
69
|
-
mcp_agent/resources/examples/workflows/evaluator.py,sha256=
|
70
|
+
mcp_agent/resources/examples/workflows/evaluator.py,sha256=3XmW1mjImlaWb0c5FWHYS9yP8nVGTbEdJySAoWXwrDg,3109
|
70
71
|
mcp_agent/resources/examples/workflows/fastagent.config.yaml,sha256=k2AiapOcK42uqG2nWDVvnSLqN4okQIQZK0FTbZufBpY,809
|
71
72
|
mcp_agent/resources/examples/workflows/human_input.py,sha256=c8cBdLEPbaMXddFwsfN3Z7RFs5PZXsdrjANfvq1VTPM,605
|
72
|
-
mcp_agent/resources/examples/workflows/orchestrator.py,sha256=
|
73
|
+
mcp_agent/resources/examples/workflows/orchestrator.py,sha256=oyKzmLA1z00wbAwDwBCthJ_qJx4fai6GAJpeOXDR-bE,2569
|
73
74
|
mcp_agent/resources/examples/workflows/parallel.py,sha256=pLbQrtXfbdYqMVddxtg5dZnBnm5Wo2mXlIa1Vf2F1FQ,3096
|
74
75
|
mcp_agent/resources/examples/workflows/router.py,sha256=XT_ewCrxPxdUTMCYQGw34qZQ3GGu8TYY_v5Lige8By4,1707
|
75
76
|
mcp_agent/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -80,7 +81,7 @@ mcp_agent/workflows/embedding/embedding_base.py,sha256=-c20ggQ8s7XhMxRX-WEhOgHE7
|
|
80
81
|
mcp_agent/workflows/embedding/embedding_cohere.py,sha256=OKTJvKD_uEafd4c2uhR5tBjprea1nyvlJOO-3FDqOnk,1540
|
81
82
|
mcp_agent/workflows/embedding/embedding_openai.py,sha256=dntjJ5P-FSMGYuyPZC8MuCU_ehwjXw9wDfzZZuSQN1E,1480
|
82
83
|
mcp_agent/workflows/evaluator_optimizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
|
-
mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py,sha256=
|
84
|
+
mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py,sha256=N4HjckQf_boFRxoWJmuvwq1IEnGYW-k8pKtqjpsnLSE,19223
|
84
85
|
mcp_agent/workflows/intent_classifier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
86
|
mcp_agent/workflows/intent_classifier/intent_classifier_base.py,sha256=zTbOmq6EY_abOlme4zl28HM4RWNNS6bbHl3tF7SshJ0,4004
|
86
87
|
mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py,sha256=_bWZGukc_q9LdA_Q18UoAMSzhN8tt4K_bRHNUhy7Crw,3997
|
@@ -91,15 +92,15 @@ mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py,sha256=
|
|
91
92
|
mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py,sha256=zj76WlTYnSCYjBQ_IDi5vFBQGmNwYaoUq1rT730sY98,1940
|
92
93
|
mcp_agent/workflows/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
93
94
|
mcp_agent/workflows/llm/augmented_llm.py,sha256=Hyx-jwgbMjE_WQ--YjIUvdj6HAgX36IvXBesGy6uic0,25884
|
94
|
-
mcp_agent/workflows/llm/augmented_llm_anthropic.py,sha256=
|
95
|
+
mcp_agent/workflows/llm/augmented_llm_anthropic.py,sha256=XZmumX-og07VR4O2TnEYQ9ZPwGgzLWt3uq6MII-tjnI,23076
|
95
96
|
mcp_agent/workflows/llm/augmented_llm_openai.py,sha256=a95Q4AFiVw36bXMgYNLFrC2zyDmHERWwkjxJFHlL6JU,25061
|
96
97
|
mcp_agent/workflows/llm/llm_selector.py,sha256=G7pIybuBDwtmyxUDov_QrNYH2FoI0qFRu2JfoxWUF5Y,11045
|
97
98
|
mcp_agent/workflows/llm/model_factory.py,sha256=7zTJrO2ReHa_6dfh_gY6xO8dTySqGFCKlOG9-AMJ-i8,6920
|
98
99
|
mcp_agent/workflows/llm/prompt_utils.py,sha256=EY3eddqnmc_YDUQJFysPnpTH6hr4r2HneeEmX76P8TQ,4948
|
99
100
|
mcp_agent/workflows/orchestrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
100
|
-
mcp_agent/workflows/orchestrator/orchestrator.py,sha256=
|
101
|
-
mcp_agent/workflows/orchestrator/orchestrator_models.py,sha256=
|
102
|
-
mcp_agent/workflows/orchestrator/orchestrator_prompts.py,sha256=
|
101
|
+
mcp_agent/workflows/orchestrator/orchestrator.py,sha256=bpTx5V9tF8tNsltWvFSDbj-u5A3aU_tofrnUp8EZ1t4,26049
|
102
|
+
mcp_agent/workflows/orchestrator/orchestrator_models.py,sha256=1ldku1fYA_hu2F6K4l2C96mAdds05VibtSzSQrGm3yw,7321
|
103
|
+
mcp_agent/workflows/orchestrator/orchestrator_prompts.py,sha256=TBFhAkbcwPCt51lEdl7h1fLFLXqu9_jWLzG4EWpJqZI,8230
|
103
104
|
mcp_agent/workflows/parallel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
104
105
|
mcp_agent/workflows/parallel/fan_in.py,sha256=EivpUL5-qftctws-tlfwmYS1QeSwr07POIbBUbwvwOk,13184
|
105
106
|
mcp_agent/workflows/parallel/fan_out.py,sha256=J-yezgjzAWxfueW_Qcgwoet4PFDRIh0h4m48lIbFA4c,7023
|
@@ -114,8 +115,8 @@ mcp_agent/workflows/swarm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
114
115
|
mcp_agent/workflows/swarm/swarm.py,sha256=-lAIeSWDqbGHGRPTvjiP9nIKWvxxy9DAojl9yQzO1Pw,11050
|
115
116
|
mcp_agent/workflows/swarm/swarm_anthropic.py,sha256=pW8zFx5baUWGd5Vw3nIDF2oVOOGNorij4qvGJKdYPcs,1624
|
116
117
|
mcp_agent/workflows/swarm/swarm_openai.py,sha256=wfteywvAGkT5bLmIxX_StHJq8144whYmCRnJASAjOes,1596
|
117
|
-
fast_agent_mcp-0.
|
118
|
-
fast_agent_mcp-0.
|
119
|
-
fast_agent_mcp-0.
|
120
|
-
fast_agent_mcp-0.
|
121
|
-
fast_agent_mcp-0.
|
118
|
+
fast_agent_mcp-0.1.1.dist-info/METADATA,sha256=pAhnRdhRDccoGazq-Vrtst1AWKgkGNR9Fe8TB8A9TJc,27861
|
119
|
+
fast_agent_mcp-0.1.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
120
|
+
fast_agent_mcp-0.1.1.dist-info/entry_points.txt,sha256=2IXtSmDK9XjWN__RWuRIJTgWyW17wJnJ_h-pb0pZAxo,174
|
121
|
+
fast_agent_mcp-0.1.1.dist-info/licenses/LICENSE,sha256=cN3FxDURL9XuzE5mhK9L2paZo82LTfjwCYVT7e3j0e4,10939
|
122
|
+
fast_agent_mcp-0.1.1.dist-info/RECORD,,
|
@@ -135,7 +135,7 @@ def copy_example_files(
|
|
135
135
|
|
136
136
|
def show_overview():
|
137
137
|
"""Display an overview of available examples in a nicely formatted table."""
|
138
|
-
console.print("\n[bold cyan]
|
138
|
+
console.print("\n[bold cyan]fast-agent Example Applications[/bold cyan]")
|
139
139
|
console.print("Build agents and compose workflows through practical examples\n")
|
140
140
|
|
141
141
|
# Create a table for better organization
|
mcp_agent/cli/commands/setup.py
CHANGED
@@ -185,7 +185,7 @@ def init(
|
|
185
185
|
# Check for existing .gitignore
|
186
186
|
needs_gitignore = not find_gitignore(config_path)
|
187
187
|
|
188
|
-
console.print("\n[bold]
|
188
|
+
console.print("\n[bold]fast-agent Setup[/bold]\n")
|
189
189
|
console.print("This will create the following files:")
|
190
190
|
console.print(f" - {config_path}/fastagent.config.yaml")
|
191
191
|
console.print(f" - {config_path}/fastagent.secrets.yaml")
|
@@ -227,6 +227,9 @@ def init(
|
|
227
227
|
console.print(
|
228
228
|
"2. Keep fastagent.secrets.yaml secure and never commit it to version control"
|
229
229
|
)
|
230
|
+
console.print(
|
231
|
+
"3. Update fastagent.config.yaml to set a default model (currently system default is 'haiku')"
|
232
|
+
)
|
230
233
|
console.print("\nTo get started, run:")
|
231
234
|
console.print(" uv run agent.py")
|
232
235
|
else:
|
mcp_agent/cli/main.py
CHANGED
@@ -22,7 +22,14 @@ console = Console()
|
|
22
22
|
|
23
23
|
def show_welcome():
|
24
24
|
"""Show a welcome message with available commands."""
|
25
|
-
|
25
|
+
from importlib.metadata import version
|
26
|
+
|
27
|
+
try:
|
28
|
+
app_version = version("fast-agent-mcp")
|
29
|
+
except: # noqa: E722
|
30
|
+
app_version = "unknown"
|
31
|
+
|
32
|
+
console.print(f"\n[bold]fast-agent (fast-agent-mcp) {app_version}[/bold]")
|
26
33
|
console.print("Build effective agents using Model Context Protocol (MCP)")
|
27
34
|
|
28
35
|
# Create a table for commands
|
@@ -41,8 +48,11 @@ def show_welcome():
|
|
41
48
|
console.print("\n[bold]Getting Started:[/bold]")
|
42
49
|
console.print("1. Set up a new project:")
|
43
50
|
console.print(" fastagent setup")
|
44
|
-
console.print("\n2.
|
45
|
-
console.print(" fastagent bootstrap
|
51
|
+
console.print("\n2. Create Building Effective Agents workflow examples:")
|
52
|
+
console.print(" fastagent bootstrap workflow")
|
53
|
+
console.print("\n3. Explore other examples:")
|
54
|
+
console.print(" fastagent bootstrap")
|
55
|
+
|
46
56
|
console.print("\nUse --help with any command for more information")
|
47
57
|
console.print("Example: fastagent bootstrap --help")
|
48
58
|
|
mcp_agent/core/agent_app.py
CHANGED
@@ -52,7 +52,7 @@ class AgentCompleter(Completer):
|
|
52
52
|
"clear": "Clear the screen",
|
53
53
|
"agents": "List available agents",
|
54
54
|
"STOP": "Stop this prompting session and move to next workflow step",
|
55
|
-
"EXIT": "Exit
|
55
|
+
"EXIT": "Exit fast-agent, terminating any running workflows",
|
56
56
|
**(commands or {}), # Allow custom commands to be passed in
|
57
57
|
}
|
58
58
|
if is_human_input:
|
@@ -319,7 +319,7 @@ async def handle_special_commands(command, agent_app=None):
|
|
319
319
|
rich_print(" @agent_name - Switch to agent")
|
320
320
|
rich_print(" STOP - Return control back to the workflow")
|
321
321
|
rich_print(
|
322
|
-
" EXIT - Exit
|
322
|
+
" EXIT - Exit fast-agent, terminating any running workflows"
|
323
323
|
)
|
324
324
|
rich_print("\n[bold]Keyboard Shortcuts:[/bold]")
|
325
325
|
rich_print(
|
@@ -338,7 +338,7 @@ async def handle_special_commands(command, agent_app=None):
|
|
338
338
|
return True
|
339
339
|
|
340
340
|
elif command == "EXIT":
|
341
|
-
raise PromptExitError("User requested to exit
|
341
|
+
raise PromptExitError("User requested to exit fast-agent session")
|
342
342
|
|
343
343
|
elif command == "LIST_AGENTS":
|
344
344
|
if available_agents:
|