fast-agent-mcp 0.1.5__tar.gz → 0.1.6__tar.gz

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 (136) hide show
  1. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/PKG-INFO +7 -5
  2. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/README.md +6 -4
  3. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/pyproject.toml +1 -1
  4. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/enhanced_prompt.py +1 -1
  5. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/fastagent.py +3 -0
  6. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/proxies.py +20 -3
  7. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/.gitignore +0 -0
  8. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/LICENSE +0 -0
  9. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/__init__.py +0 -0
  10. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/agents/__init__.py +0 -0
  11. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/agents/agent.py +0 -0
  12. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/app.py +0 -0
  13. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/__init__.py +0 -0
  14. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/__main__.py +0 -0
  15. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/commands/bootstrap.py +0 -0
  16. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/commands/config.py +0 -0
  17. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/commands/setup.py +0 -0
  18. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/main.py +0 -0
  19. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/cli/terminal.py +0 -0
  20. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/config.py +0 -0
  21. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/console.py +0 -0
  22. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/context.py +0 -0
  23. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/context_dependent.py +0 -0
  24. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/__init__.py +0 -0
  25. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/agent_app.py +0 -0
  26. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/agent_types.py +0 -0
  27. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/agent_utils.py +0 -0
  28. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/decorators.py +0 -0
  29. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/error_handling.py +0 -0
  30. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/exceptions.py +0 -0
  31. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/factory.py +0 -0
  32. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/server_validation.py +0 -0
  33. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/simulator_registry.py +0 -0
  34. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/types.py +0 -0
  35. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/core/validation.py +0 -0
  36. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/eval/__init__.py +0 -0
  37. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/event_progress.py +0 -0
  38. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/__init__.py +0 -0
  39. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/decorator_registry.py +0 -0
  40. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/executor.py +0 -0
  41. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/task_registry.py +0 -0
  42. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/temporal.py +0 -0
  43. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/workflow.py +0 -0
  44. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/executor/workflow_signal.py +0 -0
  45. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/human_input/__init__.py +0 -0
  46. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/human_input/handler.py +0 -0
  47. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/human_input/types.py +0 -0
  48. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/__init__.py +0 -0
  49. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/events.py +0 -0
  50. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/json_serializer.py +0 -0
  51. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/listeners.py +0 -0
  52. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/logger.py +0 -0
  53. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/rich_progress.py +0 -0
  54. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/tracing.py +0 -0
  55. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/logging/transport.py +0 -0
  56. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/__init__.py +0 -0
  57. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/gen_client.py +0 -0
  58. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/mcp_activity.py +0 -0
  59. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/mcp_agent_client_session.py +0 -0
  60. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/mcp_agent_server.py +0 -0
  61. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/mcp_aggregator.py +0 -0
  62. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/mcp_connection_manager.py +0 -0
  63. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp/stdio.py +0 -0
  64. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp_server/__init__.py +0 -0
  65. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp_server/agent_server.py +0 -0
  66. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/mcp_server_registry.py +0 -0
  67. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/progress_display.py +0 -0
  68. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/data-analysis/analysis-campaign.py +0 -0
  69. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/data-analysis/analysis.py +0 -0
  70. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
  71. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  72. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/agent.py +0 -0
  73. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/fastagent.config.yaml +0 -0
  74. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/job.py +0 -0
  75. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/prompt_category.py +0 -0
  76. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/prompt_sizing.py +0 -0
  77. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/sizer.py +0 -0
  78. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/internal/social.py +0 -0
  79. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/mcp_researcher/researcher-eval.py +0 -0
  80. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
  81. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/researcher/researcher-eval.py +0 -0
  82. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/researcher/researcher-imp.py +0 -0
  83. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/researcher/researcher.py +0 -0
  84. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/agent_build.py +0 -0
  85. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/chaining.py +0 -0
  86. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/evaluator.py +0 -0
  87. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
  88. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/human_input.py +0 -0
  89. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/orchestrator.py +0 -0
  90. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/parallel.py +0 -0
  91. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/router.py +0 -0
  92. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/resources/examples/workflows/sse.py +0 -0
  93. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/telemetry/__init__.py +0 -0
  94. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/telemetry/usage_tracking.py +0 -0
  95. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/ui/console_display.py +0 -0
  96. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/__init__.py +0 -0
  97. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/embedding/__init__.py +0 -0
  98. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/embedding/embedding_base.py +0 -0
  99. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/embedding/embedding_cohere.py +0 -0
  100. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/embedding/embedding_openai.py +0 -0
  101. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/evaluator_optimizer/__init__.py +0 -0
  102. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py +0 -0
  103. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/__init__.py +0 -0
  104. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_base.py +0 -0
  105. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py +0 -0
  106. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding_cohere.py +0 -0
  107. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding_openai.py +0 -0
  108. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_llm.py +0 -0
  109. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py +0 -0
  110. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py +0 -0
  111. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/__init__.py +0 -0
  112. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/augmented_llm.py +0 -0
  113. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/augmented_llm_anthropic.py +0 -0
  114. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/augmented_llm_openai.py +0 -0
  115. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/enhanced_passthrough.py +0 -0
  116. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/llm_selector.py +0 -0
  117. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/model_factory.py +0 -0
  118. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/llm/prompt_utils.py +0 -0
  119. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/orchestrator/__init__.py +0 -0
  120. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/orchestrator/orchestrator.py +0 -0
  121. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/orchestrator/orchestrator_models.py +0 -0
  122. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/orchestrator/orchestrator_prompts.py +0 -0
  123. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/parallel/__init__.py +0 -0
  124. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/parallel/fan_in.py +0 -0
  125. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/parallel/fan_out.py +0 -0
  126. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/parallel/parallel_llm.py +0 -0
  127. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/router/__init__.py +0 -0
  128. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/router/router_base.py +0 -0
  129. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/router/router_embedding.py +0 -0
  130. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/router/router_embedding_cohere.py +0 -0
  131. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/router/router_embedding_openai.py +0 -0
  132. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/router/router_llm.py +0 -0
  133. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/swarm/__init__.py +0 -0
  134. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/swarm/swarm.py +0 -0
  135. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/swarm/swarm_anthropic.py +0 -0
  136. {fast_agent_mcp-0.1.5 → fast_agent_mcp-0.1.6}/src/mcp_agent/workflows/swarm/swarm_openai.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.1.5
3
+ Version: 0.1.6
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
@@ -519,10 +519,6 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
519
519
  )
520
520
  ```
521
521
 
522
- ### Prompts
523
-
524
- MCP Prompts are supported with `apply_prompt(name)`. Prompts can be
525
-
526
522
  #### Chain
527
523
 
528
524
  ```python
@@ -586,6 +582,12 @@ MCP Prompts are supported with `apply_prompt(name)`. Prompts can be
586
582
  )
587
583
  ```
588
584
 
585
+ ### Prompts
586
+
587
+ MCP Prompts are supported with `apply_prompt(name,arguments)`, which always returns an Assistant Message. If the last message from the MCP Server is a 'User' message, it is sent to the LLM for processing. Prompts applied to the Agent's Context are retained - meaning that with `use_history=False`, Agents can act as finely tuned responders.
588
+
589
+ Prompts can also be applied interactively through the interactive interface by using the `/prompt` command.
590
+
589
591
  ### Secrets File
590
592
 
591
593
  > [!TIP]
@@ -282,10 +282,6 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
282
282
  )
283
283
  ```
284
284
 
285
- ### Prompts
286
-
287
- MCP Prompts are supported with `apply_prompt(name)`. Prompts can be
288
-
289
285
  #### Chain
290
286
 
291
287
  ```python
@@ -349,6 +345,12 @@ MCP Prompts are supported with `apply_prompt(name)`. Prompts can be
349
345
  )
350
346
  ```
351
347
 
348
+ ### Prompts
349
+
350
+ MCP Prompts are supported with `apply_prompt(name,arguments)`, which always returns an Assistant Message. If the last message from the MCP Server is a 'User' message, it is sent to the LLM for processing. Prompts applied to the Agent's Context are retained - meaning that with `use_history=False`, Agents can act as finely tuned responders.
351
+
352
+ Prompts can also be applied interactively through the interactive interface by using the `/prompt` command.
353
+
352
354
  ### Secrets File
353
355
 
354
356
  > [!TIP]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fast-agent-mcp"
3
- version = "0.1.5"
3
+ version = "0.1.6"
4
4
  description = "Define, Prompt and Test MCP enabled Agents and Workflows"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -430,7 +430,7 @@ async def handle_special_commands(command, agent_app=None):
430
430
  agent_name = command.split(":", 1)[1]
431
431
  if agent_name in available_agents:
432
432
  if agent_app:
433
- rich_print(f"[green]Switching to agent: {agent_name}[/green]")
433
+ # rich_print(f"[green]Switching to agent: {agent_name}[/green]")
434
434
  return {"switch_agent": agent_name}
435
435
  else:
436
436
  rich_print(
@@ -372,6 +372,9 @@ class FastAgent(ContextDependent):
372
372
 
373
373
  # Create wrapper with all agents
374
374
  wrapper = AgentApp(agent_app, active_agents)
375
+
376
+ # Store reference to AgentApp in MCPApp for proxies to access
377
+ agent_app._agent_app = wrapper
375
378
 
376
379
  # Handle direct message sending if --agent and --message are provided
377
380
  if self.args.agent and self.args.message:
@@ -28,18 +28,35 @@ class BaseAgentProxy:
28
28
  self._name = name
29
29
 
30
30
  async def __call__(self, message: Optional[str] = None) -> str:
31
- """Allow: agent.researcher('message')"""
31
+ """Allow: agent.researcher('message') or just agent.researcher()"""
32
+ if message is None:
33
+ # When called with no arguments, use prompt() to open the interactive interface
34
+ return await self.prompt()
32
35
  return await self.send(message)
33
36
 
34
37
  async def send(self, message: Optional[str] = None) -> str:
35
38
  """Allow: agent.researcher.send('message')"""
36
39
  if message is None:
40
+ # For consistency with agent(), use prompt() to open the interactive interface
37
41
  return await self.prompt()
38
42
  return await self.generate_str(message)
39
43
 
40
44
  async def prompt(self, default_prompt: str = "") -> str:
41
45
  """Allow: agent.researcher.prompt()"""
42
- return await self._app.prompt(self._name, default_prompt)
46
+ from mcp_agent.core.agent_app import AgentApp
47
+
48
+ # First check if _app is directly an AgentApp
49
+ if isinstance(self._app, AgentApp):
50
+ return await self._app.prompt(self._name, default_prompt)
51
+
52
+ # If not, check if it's an MCPApp with an _agent_app attribute
53
+ if hasattr(self._app, "_agent_app"):
54
+ agent_app = self._app._agent_app
55
+ if agent_app:
56
+ return await agent_app.prompt(self._name, default_prompt)
57
+
58
+ # If we can't find an AgentApp, return an error message
59
+ return "ERROR: Cannot prompt() - AgentApp not found"
43
60
 
44
61
  async def generate_str(self, message: str) -> str:
45
62
  """Generate response for a message - must be implemented by subclasses"""
@@ -203,4 +220,4 @@ class ChainProxy(BaseAgentProxy):
203
220
  proxy = self._agent_proxies[agent_name]
204
221
  current_message = await proxy.generate_str(current_message)
205
222
 
206
- return current_message
223
+ return current_message
File without changes