fast-agent-mcp 0.3.5__tar.gz → 0.3.7__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.

Potentially problematic release.


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

Files changed (286) hide show
  1. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/PKG-INFO +3 -3
  2. {fast_agent_mcp-0.3.5/src/fast_agent/resources → fast_agent_mcp-0.3.7/examples}/setup/.gitignore +6 -0
  3. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/setup/agent.py +8 -1
  4. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/setup/fastagent.config.yaml +2 -2
  5. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/setup/pyproject.toml.tmpl +6 -0
  6. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/pyproject.toml +3 -3
  7. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/__init__.py +9 -1
  8. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/agent_types.py +11 -11
  9. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/llm_agent.py +76 -40
  10. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/llm_decorator.py +355 -6
  11. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/mcp_agent.py +154 -59
  12. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/tool_agent.py +60 -4
  13. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/router_agent.py +10 -2
  14. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/auth.py +52 -29
  15. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/check_config.py +26 -5
  16. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/go.py +11 -5
  17. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/setup.py +4 -7
  18. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/config.py +4 -1
  19. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/constants.py +2 -0
  20. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/agent_app.py +2 -0
  21. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/direct_factory.py +39 -120
  22. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/fastagent.py +2 -2
  23. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/history/history_exporter.py +3 -3
  24. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/fastagent_llm.py +3 -3
  25. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_openai.py +57 -8
  26. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/__init__.py +1 -2
  27. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/mcp_aggregator.py +34 -1
  28. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/mcp_connection_manager.py +23 -4
  29. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/oauth_client.py +32 -4
  30. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompt_message_extended.py +2 -0
  31. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompt_serialization.py +124 -39
  32. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/prompt_load.py +34 -32
  33. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/prompt_server.py +26 -11
  34. {fast_agent_mcp-0.3.5/examples → fast_agent_mcp-0.3.7/src/fast_agent/resources}/setup/.gitignore +6 -0
  35. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/setup/agent.py +8 -1
  36. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/setup/fastagent.config.yaml +2 -2
  37. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/setup/pyproject.toml.tmpl +6 -0
  38. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/types/__init__.py +3 -1
  39. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/console_display.py +48 -31
  40. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/enhanced_prompt.py +119 -64
  41. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/interactive_prompt.py +66 -40
  42. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/rich_progress.py +12 -8
  43. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/.gitignore +0 -0
  44. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/LICENSE +0 -0
  45. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/README.md +0 -0
  46. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/azure-openai/fastagent.config.yaml +0 -0
  47. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/bedrock/fast-agent.config.yaml +0 -0
  48. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/custom-agents/agent.py +0 -0
  49. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/custom-agents/fastagent.config.yaml +0 -0
  50. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/data-analysis/analysis-campaign.py +0 -0
  51. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/data-analysis/analysis.py +0 -0
  52. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/data-analysis/fastagent.config.yaml +0 -0
  53. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  54. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/fastapi/fastapi-advanced.py +0 -0
  55. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/fastapi/fastapi-simple.py +0 -0
  56. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/fastapi/pyproject.toml +0 -0
  57. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/fastapi/readme.md +0 -0
  58. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/elicitation_account_server.py +0 -0
  59. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
  60. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/elicitation_game_server.py +0 -0
  61. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/fastagent.config.yaml +0 -0
  62. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
  63. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/forms_demo.py +0 -0
  64. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/game_character.py +0 -0
  65. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/game_character_handler.py +0 -0
  66. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/elicitations/tool_call.py +0 -0
  67. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/mcp-filtering/fastagent.config.yaml +0 -0
  68. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/mcp-filtering/fastagent.secrets.yaml.example +0 -0
  69. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/mcp-filtering/mcp_server.py +0 -0
  70. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/mcp-filtering/test_mcp_filtering.py +0 -0
  71. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/state-transfer/agent_one.py +0 -0
  72. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/state-transfer/agent_two.py +0 -0
  73. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  74. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  75. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/vision-examples/cat.png +0 -0
  76. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/vision-examples/example1.py +0 -0
  77. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/vision-examples/example2.py +0 -0
  78. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/vision-examples/example3.py +0 -0
  79. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/mcp/vision-examples/fastagent.config.yaml +0 -0
  80. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/new-api/display_check.py +0 -0
  81. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/new-api/simple_llm.py +0 -0
  82. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/new-api/simple_llm_advanced.py +0 -0
  83. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/new-api/simple_mcp.py +0 -0
  84. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/otel/agent.py +0 -0
  85. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/otel/agent2.py +0 -0
  86. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/otel/docker-compose.yaml +0 -0
  87. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/otel/fastagent.config.yaml +0 -0
  88. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/researcher/fastagent.config.yaml +0 -0
  89. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/researcher/researcher-eval.py +0 -0
  90. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/researcher/researcher-imp.py +0 -0
  91. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/researcher/researcher.py +0 -0
  92. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/setup/fastagent.secrets.yaml.example +0 -0
  93. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/.env.sample +0 -0
  94. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/Makefile +0 -0
  95. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/README.md +0 -0
  96. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/agent.py +0 -0
  97. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/demo_images/clam.jpg +0 -0
  98. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/demo_images/crab.png +0 -0
  99. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/demo_images/shrimp.png +0 -0
  100. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/docker-compose.yml +0 -0
  101. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/fastagent.config.yaml +0 -0
  102. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/image_demo.py +0 -0
  103. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/mcp_server/Dockerfile +0 -0
  104. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
  105. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  106. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/mcp_server/pyproject.toml +0 -0
  107. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/simple_agent.py +0 -0
  108. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
  109. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
  110. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
  111. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/chaining.py +0 -0
  112. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/evaluator.py +0 -0
  113. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/fastagent.config.yaml +0 -0
  114. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/graded_report.md +0 -0
  115. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/human_input.py +0 -0
  116. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/orchestrator.py +0 -0
  117. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/parallel.py +0 -0
  118. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/router.py +0 -0
  119. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/short_story.md +0 -0
  120. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/examples/workflows/short_story.txt +0 -0
  121. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/hatch_build.py +0 -0
  122. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/__init__.py +0 -0
  123. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/chain_agent.py +0 -0
  124. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/evaluator_optimizer.py +0 -0
  125. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/iterative_planner.py +0 -0
  126. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/orchestrator_models.py +0 -0
  127. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/orchestrator_prompts.py +0 -0
  128. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/agents/workflow/parallel_agent.py +0 -0
  129. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/__init__.py +0 -0
  130. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/__main__.py +0 -0
  131. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/quickstart.py +0 -0
  132. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/server_helpers.py +0 -0
  133. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/commands/url_parser.py +0 -0
  134. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/constants.py +0 -0
  135. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/main.py +0 -0
  136. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/cli/terminal.py +0 -0
  137. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/context.py +0 -0
  138. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/context_dependent.py +0 -0
  139. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/__init__.py +0 -0
  140. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/core_app.py +0 -0
  141. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/direct_decorators.py +0 -0
  142. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/error_handling.py +0 -0
  143. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/exceptions.py +0 -0
  144. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/executor/__init__.py +0 -0
  145. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/executor/executor.py +0 -0
  146. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/executor/task_registry.py +0 -0
  147. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/executor/workflow_signal.py +0 -0
  148. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/logging/__init__.py +0 -0
  149. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/logging/events.py +0 -0
  150. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/logging/json_serializer.py +0 -0
  151. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/logging/listeners.py +0 -0
  152. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/logging/logger.py +0 -0
  153. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/logging/transport.py +0 -0
  154. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/prompt.py +0 -0
  155. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/core/validation.py +0 -0
  156. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/event_progress.py +0 -0
  157. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/human_input/__init__.py +0 -0
  158. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/human_input/elicitation_handler.py +0 -0
  159. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/human_input/elicitation_state.py +0 -0
  160. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/human_input/form_fields.py +0 -0
  161. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/human_input/simple_form.py +0 -0
  162. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/human_input/types.py +0 -0
  163. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/interfaces.py +0 -0
  164. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/__init__.py +0 -0
  165. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/internal/passthrough.py +0 -0
  166. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/internal/playback.py +0 -0
  167. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/internal/silent.py +0 -0
  168. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/internal/slow.py +0 -0
  169. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/memory.py +0 -0
  170. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/model_database.py +0 -0
  171. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/model_factory.py +0 -0
  172. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/model_info.py +0 -0
  173. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/prompt_utils.py +0 -0
  174. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/anthropic/anthropic_utils.py +0 -0
  175. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/anthropic/llm_anthropic.py +0 -0
  176. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/anthropic/multipart_converter_anthropic.py +0 -0
  177. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/bedrock/bedrock_utils.py +0 -0
  178. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/bedrock/llm_bedrock.py +0 -0
  179. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/google/google_converter.py +0 -0
  180. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/google/llm_google_native.py +0 -0
  181. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_aliyun.py +0 -0
  182. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_azure.py +0 -0
  183. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_deepseek.py +0 -0
  184. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_generic.py +0 -0
  185. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_google_oai.py +0 -0
  186. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_groq.py +0 -0
  187. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_openrouter.py +0 -0
  188. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_tensorzero_openai.py +0 -0
  189. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/llm_xai.py +0 -0
  190. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/multipart_converter_openai.py +0 -0
  191. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/openai_multipart.py +0 -0
  192. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider/openai/openai_utils.py +0 -0
  193. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider_key_manager.py +0 -0
  194. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/provider_types.py +0 -0
  195. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/request_params.py +0 -0
  196. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/sampling_converter.py +0 -0
  197. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/llm/usage_tracking.py +0 -0
  198. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/common.py +0 -0
  199. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/elicitation_factory.py +0 -0
  200. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/elicitation_handlers.py +0 -0
  201. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/gen_client.py +0 -0
  202. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/helpers/__init__.py +0 -0
  203. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/helpers/content_helpers.py +0 -0
  204. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/helpers/server_config_helpers.py +0 -0
  205. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/hf_auth.py +0 -0
  206. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/interfaces.py +0 -0
  207. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/logger_textio.py +0 -0
  208. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/mcp_agent_client_session.py +0 -0
  209. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/mcp_content.py +0 -0
  210. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/mime_utils.py +0 -0
  211. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompt.py +0 -0
  212. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompt_render.py +0 -0
  213. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/__init__.py +0 -0
  214. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/__main__.py +0 -0
  215. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/prompt_constants.py +0 -0
  216. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/prompt_helpers.py +0 -0
  217. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/prompts/prompt_template.py +0 -0
  218. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/resource_utils.py +0 -0
  219. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/sampling.py +0 -0
  220. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/server/__init__.py +0 -0
  221. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/server/agent_server.py +0 -0
  222. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/ui_agent.py +0 -0
  223. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp/ui_mixin.py +0 -0
  224. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/mcp_server_registry.py +0 -0
  225. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/py.typed +0 -0
  226. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/data-analysis/analysis-campaign.py +0 -0
  227. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/data-analysis/analysis.py +0 -0
  228. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
  229. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  230. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_account_server.py +0 -0
  231. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
  232. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_game_server.py +0 -0
  233. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/fastagent.config.yaml +0 -0
  234. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
  235. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/forms_demo.py +0 -0
  236. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/game_character.py +0 -0
  237. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/game_character_handler.py +0 -0
  238. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/elicitations/tool_call.py +0 -0
  239. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/state-transfer/agent_one.py +0 -0
  240. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/state-transfer/agent_two.py +0 -0
  241. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  242. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  243. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
  244. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/researcher/researcher-eval.py +0 -0
  245. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/researcher/researcher-imp.py +0 -0
  246. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/researcher/researcher.py +0 -0
  247. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/.env.sample +0 -0
  248. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/Makefile +0 -0
  249. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/README.md +0 -0
  250. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/agent.py +0 -0
  251. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
  252. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/demo_images/crab.png +0 -0
  253. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
  254. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/docker-compose.yml +0 -0
  255. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/fastagent.config.yaml +0 -0
  256. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/image_demo.py +0 -0
  257. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/mcp_server/.python-version +0 -0
  258. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/mcp_server/Dockerfile +0 -0
  259. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
  260. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  261. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/mcp_server/pyproject.toml +0 -0
  262. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/simple_agent.py +0 -0
  263. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
  264. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
  265. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
  266. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/chaining.py +0 -0
  267. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/evaluator.py +0 -0
  268. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
  269. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/graded_report.md +0 -0
  270. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/human_input.py +0 -0
  271. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/orchestrator.py +0 -0
  272. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/parallel.py +0 -0
  273. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/router.py +0 -0
  274. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/short_story.md +0 -0
  275. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/examples/workflows/short_story.txt +0 -0
  276. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/resources/setup/fastagent.secrets.yaml.example +0 -0
  277. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/tools/elicitation.py +0 -0
  278. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/types/llm_stop_reason.py +0 -0
  279. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/__init__.py +0 -0
  280. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/console.py +0 -0
  281. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/elicitation_form.py +0 -0
  282. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/elicitation_style.py +0 -0
  283. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/mcp_ui_utils.py +0 -0
  284. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/mermaid_utils.py +0 -0
  285. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/progress_display.py +0 -0
  286. {fast_agent_mcp-0.3.5 → fast_agent_mcp-0.3.7}/src/fast_agent/ui/usage_display.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.3.5
3
+ Version: 0.3.7
4
4
  Summary: Define, Prompt and Test MCP enabled Agents and Workflows
5
5
  Author-email: Shaun Smith <fastagent@llmindset.co.uk>
6
6
  License: Apache License
@@ -211,7 +211,7 @@ Classifier: Programming Language :: Python :: 3
211
211
  Requires-Python: >=3.13.5
212
212
  Requires-Dist: a2a-sdk>=0.3.0
213
213
  Requires-Dist: aiohttp>=3.11.13
214
- Requires-Dist: anthropic>=0.66.0
214
+ Requires-Dist: anthropic>=0.68.0
215
215
  Requires-Dist: azure-identity>=1.14.0
216
216
  Requires-Dist: boto3>=1.35.0
217
217
  Requires-Dist: deprecated>=1.2.18
@@ -220,7 +220,7 @@ Requires-Dist: fastapi>=0.115.6
220
220
  Requires-Dist: google-genai>=1.33.0
221
221
  Requires-Dist: keyring>=24.3.1
222
222
  Requires-Dist: mcp==1.14.0
223
- Requires-Dist: openai>=1.106.1
223
+ Requires-Dist: openai>=1.108.0
224
224
  Requires-Dist: opentelemetry-distro>=0.55b0
225
225
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
226
226
  Requires-Dist: opentelemetry-instrumentation-anthropic>=0.43.1; python_version >= '3.10' and python_version < '4.0'
@@ -22,3 +22,9 @@ fastagent.jsonl
22
22
  # Editors (optional)
23
23
  .idea/
24
24
  .vscode/
25
+
26
+ # Packaging metadata
27
+ *.dist-info/
28
+ *.egg-info/
29
+ dist/
30
+ build/
@@ -6,8 +6,15 @@ from fast_agent import FastAgent
6
6
  fast = FastAgent("fast-agent example")
7
7
 
8
8
 
9
+ default_instruction = """You are a helpful AI Agent.
10
+
11
+ {{serverInstructions}}
12
+
13
+ The current date is {{currentDate}}."""
14
+
15
+
9
16
  # Define the agent
10
- @fast.agent(instruction="You are a helpful AI Agent")
17
+ @fast.agent(instruction=default_instruction)
11
18
  async def main():
12
19
  # use the --model command line switch or agent arguments to change model
13
20
  async with fast.run() as agent:
@@ -7,10 +7,10 @@
7
7
  # Accepts aliases for Anthropic Models: haiku, haiku3, sonnet, sonnet35, opus, opus3
8
8
  # and OpenAI Models: gpt-4.1, gpt-4.1-mini, o1, o1-mini, o3-mini
9
9
  #
10
- # If not specified, defaults to "haiku".
10
+ # If not specified, defaults to "gpt-5-mini.low".
11
11
  # Can be overriden with a command line switch --model=<model>, or within the Agent constructor.
12
12
 
13
- default_model: haiku
13
+ default_model: gpt-5-mini.low
14
14
  # mcp-ui support: disabled, enabled or auto. "auto" opens the web browser on the asset automatically
15
15
  # mcp_ui_output_dir: ".fast-agent/ui" # Where to write MCP-UI HTML files (relative to CWD if not absolute)
16
16
  # mcp_ui_mode: enabled
@@ -15,3 +15,9 @@ package = true
15
15
  [project.scripts]
16
16
  fast-agent-app = "agent:main"
17
17
 
18
+ [build-system]
19
+ requires = ["setuptools>=64", "wheel"]
20
+ build-backend = "setuptools.build_meta"
21
+
22
+ [tool.setuptools]
23
+ py-modules = ["agent"]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fast-agent-mcp"
3
- version = "0.3.5"
3
+ version = "0.3.7"
4
4
  description = "Define, Prompt and Test MCP enabled Agents and Workflows"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -23,8 +23,8 @@ dependencies = [
23
23
  "pyyaml>=6.0.2",
24
24
  "rich>=14.1.0",
25
25
  "typer>=0.15.1",
26
- "anthropic>=0.66.0",
27
- "openai>=1.106.1",
26
+ "anthropic>=0.68.0",
27
+ "openai>=1.108.0",
28
28
  "azure-identity>=1.14.0",
29
29
  "boto3>=1.35.0",
30
30
  "prompt-toolkit>=3.0.51",
@@ -27,8 +27,11 @@ from fast_agent.config import (
27
27
  XAISettings,
28
28
  )
29
29
 
30
+ # Prompt helpers (safe - no heavy dependencies)
31
+ from fast_agent.mcp.prompt import Prompt
32
+
30
33
  # Type definitions and enums (safe - no dependencies)
31
- from fast_agent.types import LlmStopReason, RequestParams
34
+ from fast_agent.types import LlmStopReason, PromptMessageExtended, RequestParams
32
35
 
33
36
 
34
37
  def __getattr__(name: str):
@@ -91,6 +94,8 @@ def __getattr__(name: str):
91
94
  if TYPE_CHECKING: # pragma: no cover - typing aid only
92
95
  # Provide a concrete import path for type checkers/IDEs
93
96
  from fast_agent.core.fastagent import FastAgent as FastAgent # noqa: F401
97
+ from fast_agent.mcp.prompt import Prompt as Prompt # noqa: F401
98
+ from fast_agent.types import PromptMessageExtended as PromptMessageExtended # noqa: F401
94
99
 
95
100
 
96
101
  __all__ = [
@@ -127,6 +132,9 @@ __all__ = [
127
132
  # Type definitions and enums (eagerly loaded)
128
133
  "LlmStopReason",
129
134
  "RequestParams",
135
+ "PromptMessageExtended",
136
+ # Prompt helpers (eagerly loaded)
137
+ "Prompt",
130
138
  # Agents (lazy loaded)
131
139
  "LlmAgent",
132
140
  "LlmDecorator",
@@ -3,7 +3,7 @@ Type definitions for agents and agent configurations.
3
3
  """
4
4
 
5
5
  from dataclasses import dataclass, field
6
- from enum import Enum
6
+ from enum import StrEnum, auto
7
7
  from typing import Dict, List, Optional
8
8
 
9
9
  from mcp.client.session import ElicitationFnT
@@ -12,18 +12,18 @@ from mcp.client.session import ElicitationFnT
12
12
  from fast_agent.types import RequestParams
13
13
 
14
14
 
15
- class AgentType(Enum):
15
+ class AgentType(StrEnum):
16
16
  """Enumeration of supported agent types."""
17
17
 
18
- LLM = "llm" # simple llm delegator
19
- BASIC = "agent"
20
- CUSTOM = "custom"
21
- ORCHESTRATOR = "orchestrator"
22
- PARALLEL = "parallel"
23
- EVALUATOR_OPTIMIZER = "evaluator_optimizer"
24
- ROUTER = "router"
25
- CHAIN = "chain"
26
- ITERATIVE_PLANNER = "iterative_planner"
18
+ LLM = auto()
19
+ BASIC = auto()
20
+ CUSTOM = auto()
21
+ ORCHESTRATOR = auto()
22
+ PARALLEL = auto()
23
+ EVALUATOR_OPTIMIZER = auto()
24
+ ROUTER = auto()
25
+ CHAIN = auto()
26
+ ITERATIVE_PLANNER = auto()
27
27
 
28
28
 
29
29
  @dataclass
@@ -81,66 +81,93 @@ class LlmAgent(LlmDecorator):
81
81
  """
82
82
 
83
83
  # Determine display content based on stop reason if not provided
84
- if additional_message is None:
85
- # Generate additional message based on stop reason
86
- match message.stop_reason:
87
- case LlmStopReason.END_TURN:
88
- # No additional message needed for normal end turn
89
- additional_message_text = None
90
-
91
- case LlmStopReason.MAX_TOKENS:
92
- additional_message_text = Text(
84
+ additional_segments: List[Text] = []
85
+
86
+ # Generate additional message based on stop reason
87
+ match message.stop_reason:
88
+ case LlmStopReason.END_TURN:
89
+ pass
90
+
91
+ case LlmStopReason.MAX_TOKENS:
92
+ additional_segments.append(
93
+ Text(
93
94
  "\n\nMaximum output tokens reached - generation stopped.",
94
95
  style="dim red italic",
95
96
  )
97
+ )
96
98
 
97
- case LlmStopReason.SAFETY:
98
- additional_message_text = Text(
99
- "\n\nContent filter activated - generation stopped.", style="dim red italic"
99
+ case LlmStopReason.SAFETY:
100
+ additional_segments.append(
101
+ Text(
102
+ "\n\nContent filter activated - generation stopped.",
103
+ style="dim red italic",
100
104
  )
105
+ )
101
106
 
102
- case LlmStopReason.PAUSE:
103
- additional_message_text = Text(
104
- "\n\nLLM has requested a pause.", style="dim green italic"
105
- )
107
+ case LlmStopReason.PAUSE:
108
+ additional_segments.append(
109
+ Text("\n\nLLM has requested a pause.", style="dim green italic")
110
+ )
106
111
 
107
- case LlmStopReason.STOP_SEQUENCE:
108
- additional_message_text = Text(
109
- "\n\nStop Sequence activated - generation stopped.", style="dim red italic"
112
+ case LlmStopReason.STOP_SEQUENCE:
113
+ additional_segments.append(
114
+ Text(
115
+ "\n\nStop Sequence activated - generation stopped.",
116
+ style="dim red italic",
110
117
  )
118
+ )
111
119
 
112
- case LlmStopReason.TOOL_USE:
113
- if None is message.last_text():
114
- additional_message_text = Text(
115
- "The assistant requested tool calls", style="dim green italic"
116
- )
117
- else:
118
- additional_message_text = None
120
+ case LlmStopReason.TOOL_USE:
121
+ if None is message.last_text():
122
+ additional_segments.append(
123
+ Text("The assistant requested tool calls", style="dim green italic")
124
+ )
119
125
 
120
- case _:
121
- if message.stop_reason:
122
- additional_message_text = Text(
126
+ case _:
127
+ if message.stop_reason:
128
+ additional_segments.append(
129
+ Text(
123
130
  f"\n\nGeneration stopped for an unhandled reason ({message.stop_reason})",
124
131
  style="dim red italic",
125
132
  )
126
- else:
127
- additional_message_text = None
128
- else:
129
- # Use provided additional message
130
- additional_message_text = (
131
- additional_message if isinstance(additional_message, Text) else None
133
+ )
134
+
135
+ if additional_message is not None:
136
+ additional_segments.append(
137
+ additional_message if isinstance(additional_message, Text) else Text(str(additional_message))
132
138
  )
133
139
 
140
+ additional_message_text = None
141
+ if additional_segments:
142
+ combined = Text()
143
+ for segment in additional_segments:
144
+ combined += segment
145
+ additional_message_text = combined
146
+
134
147
  message_text = message.last_text() or ""
135
148
 
136
149
  # Use provided name/model or fall back to defaults
137
150
  display_name = name if name is not None else self.name
138
151
  display_model = model if model is not None else (self.llm.model_name if self._llm else None)
139
152
 
153
+ # Convert highlight_items to highlight_index
154
+ highlight_index = None
155
+ if highlight_items and bottom_items:
156
+ if isinstance(highlight_items, str):
157
+ try:
158
+ highlight_index = bottom_items.index(highlight_items)
159
+ except ValueError:
160
+ pass
161
+ elif isinstance(highlight_items, list) and len(highlight_items) > 0:
162
+ try:
163
+ highlight_index = bottom_items.index(highlight_items[0])
164
+ except ValueError:
165
+ pass
166
+
140
167
  await self.display.show_assistant_message(
141
168
  message_text,
142
169
  bottom_items=bottom_items,
143
- highlight_items=highlight_items,
170
+ highlight_index=highlight_index,
144
171
  max_item_length=max_item_length,
145
172
  name=display_name,
146
173
  model=display_model,
@@ -168,9 +195,13 @@ class LlmAgent(LlmDecorator):
168
195
 
169
196
  # TODO -- we should merge the request parameters here with the LLM defaults?
170
197
  # TODO - manage error catch, recovery, pause
171
- result = await super().generate_impl(messages, request_params, tools)
198
+ result, summary = await self._generate_with_summary(messages, request_params, tools)
172
199
 
173
- await self.show_assistant_message(result)
200
+ summary_text = (
201
+ Text(f"\n\n{summary.message}", style="dim red italic") if summary else None
202
+ )
203
+
204
+ await self.show_assistant_message(result, additional_message=summary_text)
174
205
  return result
175
206
 
176
207
  async def structured_impl(
@@ -182,8 +213,13 @@ class LlmAgent(LlmDecorator):
182
213
  if "user" == messages[-1].role:
183
214
  self.show_user_message(message=messages[-1])
184
215
 
185
- result, message = await super().structured_impl(messages, model, request_params)
186
- await self.show_assistant_message(message=message)
216
+ (result, message), summary = await self._structured_with_summary(
217
+ messages, model, request_params
218
+ )
219
+ summary_text = (
220
+ Text(f"\n\n{summary.message}", style="dim red italic") if summary else None
221
+ )
222
+ await self.show_assistant_message(message=message, additional_message=summary_text)
187
223
  return result, message
188
224
 
189
225
  # async def show_prompt_loaded(