fast-agent-mcp 0.3.7__tar.gz → 0.3.8__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 (288) hide show
  1. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/PKG-INFO +2 -2
  2. fast_agent_mcp-0.3.8/examples/a2a/agent_executor.py +93 -0
  3. fast_agent_mcp-0.3.8/examples/a2a/server.py +53 -0
  4. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/fastapi/fastapi-advanced.py +1 -1
  5. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/pyproject.toml +2 -2
  6. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/llm_agent.py +6 -8
  7. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/llm_decorator.py +2 -7
  8. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/mcp_agent.py +2 -3
  9. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/auth.py +14 -1
  10. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/logging/listeners.py +2 -1
  11. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/interfaces.py +2 -2
  12. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/model_database.py +7 -1
  13. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/model_factory.py +2 -3
  14. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/bedrock/llm_bedrock.py +1 -1
  15. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/google/llm_google_native.py +1 -3
  16. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_azure.py +1 -1
  17. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_tensorzero_openai.py +1 -1
  18. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/request_params.py +1 -1
  19. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/.gitignore +0 -0
  20. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/LICENSE +0 -0
  21. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/README.md +0 -0
  22. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/azure-openai/fastagent.config.yaml +0 -0
  23. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/bedrock/fast-agent.config.yaml +0 -0
  24. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/custom-agents/agent.py +0 -0
  25. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/custom-agents/fastagent.config.yaml +0 -0
  26. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/data-analysis/analysis-campaign.py +0 -0
  27. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/data-analysis/analysis.py +0 -0
  28. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/data-analysis/fastagent.config.yaml +0 -0
  29. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  30. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/fastapi/fastapi-simple.py +0 -0
  31. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/fastapi/pyproject.toml +0 -0
  32. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/fastapi/readme.md +0 -0
  33. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/elicitation_account_server.py +0 -0
  34. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
  35. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/elicitation_game_server.py +0 -0
  36. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/fastagent.config.yaml +0 -0
  37. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
  38. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/forms_demo.py +0 -0
  39. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/game_character.py +0 -0
  40. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/game_character_handler.py +0 -0
  41. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/elicitations/tool_call.py +0 -0
  42. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/mcp-filtering/fastagent.config.yaml +0 -0
  43. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/mcp-filtering/fastagent.secrets.yaml.example +0 -0
  44. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/mcp-filtering/mcp_server.py +0 -0
  45. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/mcp-filtering/test_mcp_filtering.py +0 -0
  46. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/state-transfer/agent_one.py +0 -0
  47. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/state-transfer/agent_two.py +0 -0
  48. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  49. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  50. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/vision-examples/cat.png +0 -0
  51. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/vision-examples/example1.py +0 -0
  52. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/vision-examples/example2.py +0 -0
  53. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/vision-examples/example3.py +0 -0
  54. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/mcp/vision-examples/fastagent.config.yaml +0 -0
  55. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/new-api/display_check.py +0 -0
  56. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/new-api/simple_llm.py +0 -0
  57. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/new-api/simple_llm_advanced.py +0 -0
  58. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/new-api/simple_mcp.py +0 -0
  59. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/otel/agent.py +0 -0
  60. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/otel/agent2.py +0 -0
  61. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/otel/docker-compose.yaml +0 -0
  62. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/otel/fastagent.config.yaml +0 -0
  63. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/researcher/fastagent.config.yaml +0 -0
  64. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/researcher/researcher-eval.py +0 -0
  65. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/researcher/researcher-imp.py +0 -0
  66. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/researcher/researcher.py +0 -0
  67. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/setup/.gitignore +0 -0
  68. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/setup/agent.py +0 -0
  69. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/setup/fastagent.config.yaml +0 -0
  70. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/setup/fastagent.secrets.yaml.example +0 -0
  71. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/setup/pyproject.toml.tmpl +0 -0
  72. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/.env.sample +0 -0
  73. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/Makefile +0 -0
  74. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/README.md +0 -0
  75. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/agent.py +0 -0
  76. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/demo_images/clam.jpg +0 -0
  77. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/demo_images/crab.png +0 -0
  78. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/demo_images/shrimp.png +0 -0
  79. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/docker-compose.yml +0 -0
  80. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/fastagent.config.yaml +0 -0
  81. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/image_demo.py +0 -0
  82. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/mcp_server/Dockerfile +0 -0
  83. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
  84. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  85. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/mcp_server/pyproject.toml +0 -0
  86. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/simple_agent.py +0 -0
  87. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
  88. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
  89. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
  90. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/chaining.py +0 -0
  91. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/evaluator.py +0 -0
  92. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/fastagent.config.yaml +0 -0
  93. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/graded_report.md +0 -0
  94. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/human_input.py +0 -0
  95. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/orchestrator.py +0 -0
  96. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/parallel.py +0 -0
  97. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/router.py +0 -0
  98. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/short_story.md +0 -0
  99. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/examples/workflows/short_story.txt +0 -0
  100. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/hatch_build.py +0 -0
  101. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/__init__.py +0 -0
  102. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/__init__.py +0 -0
  103. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/agent_types.py +0 -0
  104. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/tool_agent.py +0 -0
  105. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/chain_agent.py +0 -0
  106. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/evaluator_optimizer.py +0 -0
  107. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/iterative_planner.py +0 -0
  108. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/orchestrator_models.py +0 -0
  109. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/orchestrator_prompts.py +0 -0
  110. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/parallel_agent.py +0 -0
  111. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/agents/workflow/router_agent.py +0 -0
  112. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/__init__.py +0 -0
  113. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/__main__.py +0 -0
  114. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/check_config.py +0 -0
  115. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/go.py +0 -0
  116. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/quickstart.py +0 -0
  117. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/server_helpers.py +0 -0
  118. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/setup.py +0 -0
  119. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/commands/url_parser.py +0 -0
  120. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/constants.py +0 -0
  121. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/main.py +0 -0
  122. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/cli/terminal.py +0 -0
  123. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/config.py +0 -0
  124. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/constants.py +0 -0
  125. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/context.py +0 -0
  126. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/context_dependent.py +0 -0
  127. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/__init__.py +0 -0
  128. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/agent_app.py +0 -0
  129. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/core_app.py +0 -0
  130. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/direct_decorators.py +0 -0
  131. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/direct_factory.py +0 -0
  132. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/error_handling.py +0 -0
  133. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/exceptions.py +0 -0
  134. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/executor/__init__.py +0 -0
  135. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/executor/executor.py +0 -0
  136. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/executor/task_registry.py +0 -0
  137. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/executor/workflow_signal.py +0 -0
  138. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/fastagent.py +0 -0
  139. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/logging/__init__.py +0 -0
  140. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/logging/events.py +0 -0
  141. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/logging/json_serializer.py +0 -0
  142. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/logging/logger.py +0 -0
  143. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/logging/transport.py +0 -0
  144. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/prompt.py +0 -0
  145. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/core/validation.py +0 -0
  146. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/event_progress.py +0 -0
  147. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/history/history_exporter.py +0 -0
  148. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/human_input/__init__.py +0 -0
  149. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/human_input/elicitation_handler.py +0 -0
  150. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/human_input/elicitation_state.py +0 -0
  151. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/human_input/form_fields.py +0 -0
  152. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/human_input/simple_form.py +0 -0
  153. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/human_input/types.py +0 -0
  154. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/__init__.py +0 -0
  155. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/fastagent_llm.py +0 -0
  156. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/internal/passthrough.py +0 -0
  157. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/internal/playback.py +0 -0
  158. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/internal/silent.py +0 -0
  159. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/internal/slow.py +0 -0
  160. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/memory.py +0 -0
  161. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/model_info.py +0 -0
  162. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/prompt_utils.py +0 -0
  163. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/anthropic/anthropic_utils.py +0 -0
  164. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/anthropic/llm_anthropic.py +0 -0
  165. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/anthropic/multipart_converter_anthropic.py +0 -0
  166. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/bedrock/bedrock_utils.py +0 -0
  167. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/google/google_converter.py +0 -0
  168. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_aliyun.py +0 -0
  169. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_deepseek.py +0 -0
  170. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_generic.py +0 -0
  171. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_google_oai.py +0 -0
  172. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_groq.py +0 -0
  173. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_openai.py +0 -0
  174. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_openrouter.py +0 -0
  175. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/llm_xai.py +0 -0
  176. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/multipart_converter_openai.py +0 -0
  177. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/openai_multipart.py +0 -0
  178. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider/openai/openai_utils.py +0 -0
  179. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider_key_manager.py +0 -0
  180. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/provider_types.py +0 -0
  181. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/sampling_converter.py +0 -0
  182. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/llm/usage_tracking.py +0 -0
  183. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/__init__.py +0 -0
  184. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/common.py +0 -0
  185. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/elicitation_factory.py +0 -0
  186. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/elicitation_handlers.py +0 -0
  187. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/gen_client.py +0 -0
  188. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/helpers/__init__.py +0 -0
  189. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/helpers/content_helpers.py +0 -0
  190. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/helpers/server_config_helpers.py +0 -0
  191. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/hf_auth.py +0 -0
  192. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/interfaces.py +0 -0
  193. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/logger_textio.py +0 -0
  194. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/mcp_agent_client_session.py +0 -0
  195. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/mcp_aggregator.py +0 -0
  196. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/mcp_connection_manager.py +0 -0
  197. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/mcp_content.py +0 -0
  198. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/mime_utils.py +0 -0
  199. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/oauth_client.py +0 -0
  200. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompt.py +0 -0
  201. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompt_message_extended.py +0 -0
  202. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompt_render.py +0 -0
  203. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompt_serialization.py +0 -0
  204. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/__init__.py +0 -0
  205. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/__main__.py +0 -0
  206. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/prompt_constants.py +0 -0
  207. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/prompt_helpers.py +0 -0
  208. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/prompt_load.py +0 -0
  209. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/prompt_server.py +0 -0
  210. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/prompts/prompt_template.py +0 -0
  211. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/resource_utils.py +0 -0
  212. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/sampling.py +0 -0
  213. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/server/__init__.py +0 -0
  214. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/server/agent_server.py +0 -0
  215. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/ui_agent.py +0 -0
  216. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp/ui_mixin.py +0 -0
  217. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/mcp_server_registry.py +0 -0
  218. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/py.typed +0 -0
  219. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/data-analysis/analysis-campaign.py +0 -0
  220. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/data-analysis/analysis.py +0 -0
  221. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
  222. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  223. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_account_server.py +0 -0
  224. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
  225. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_game_server.py +0 -0
  226. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/fastagent.config.yaml +0 -0
  227. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
  228. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/forms_demo.py +0 -0
  229. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/game_character.py +0 -0
  230. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/game_character_handler.py +0 -0
  231. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/elicitations/tool_call.py +0 -0
  232. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/state-transfer/agent_one.py +0 -0
  233. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/state-transfer/agent_two.py +0 -0
  234. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  235. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  236. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
  237. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/researcher/researcher-eval.py +0 -0
  238. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/researcher/researcher-imp.py +0 -0
  239. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/researcher/researcher.py +0 -0
  240. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/.env.sample +0 -0
  241. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/Makefile +0 -0
  242. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/README.md +0 -0
  243. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/agent.py +0 -0
  244. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
  245. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/demo_images/crab.png +0 -0
  246. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
  247. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/docker-compose.yml +0 -0
  248. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/fastagent.config.yaml +0 -0
  249. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/image_demo.py +0 -0
  250. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/mcp_server/.python-version +0 -0
  251. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/mcp_server/Dockerfile +0 -0
  252. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
  253. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  254. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/mcp_server/pyproject.toml +0 -0
  255. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/simple_agent.py +0 -0
  256. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
  257. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
  258. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
  259. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/chaining.py +0 -0
  260. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/evaluator.py +0 -0
  261. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
  262. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/graded_report.md +0 -0
  263. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/human_input.py +0 -0
  264. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/orchestrator.py +0 -0
  265. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/parallel.py +0 -0
  266. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/router.py +0 -0
  267. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/short_story.md +0 -0
  268. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/examples/workflows/short_story.txt +0 -0
  269. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/setup/.gitignore +0 -0
  270. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/setup/agent.py +0 -0
  271. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/setup/fastagent.config.yaml +0 -0
  272. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/setup/fastagent.secrets.yaml.example +0 -0
  273. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/resources/setup/pyproject.toml.tmpl +0 -0
  274. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/tools/elicitation.py +0 -0
  275. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/types/__init__.py +0 -0
  276. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/types/llm_stop_reason.py +0 -0
  277. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/__init__.py +0 -0
  278. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/console.py +0 -0
  279. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/console_display.py +0 -0
  280. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/elicitation_form.py +0 -0
  281. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/elicitation_style.py +0 -0
  282. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/enhanced_prompt.py +0 -0
  283. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/interactive_prompt.py +0 -0
  284. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/mcp_ui_utils.py +0 -0
  285. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/mermaid_utils.py +0 -0
  286. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/progress_display.py +0 -0
  287. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/src/fast_agent/ui/rich_progress.py +0 -0
  288. {fast_agent_mcp-0.3.7 → fast_agent_mcp-0.3.8}/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.7
3
+ Version: 0.3.8
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
@@ -209,7 +209,7 @@ Classifier: License :: OSI Approved :: Apache Software License
209
209
  Classifier: Operating System :: OS Independent
210
210
  Classifier: Programming Language :: Python :: 3
211
211
  Requires-Python: >=3.13.5
212
- Requires-Dist: a2a-sdk>=0.3.0
212
+ Requires-Dist: a2a-sdk>=0.3.6
213
213
  Requires-Dist: aiohttp>=3.11.13
214
214
  Requires-Dist: anthropic>=0.68.0
215
215
  Requires-Dist: azure-identity>=1.14.0
@@ -0,0 +1,93 @@
1
+ from __future__ import annotations
2
+
3
+ from contextlib import AsyncExitStack
4
+ from typing import TYPE_CHECKING, cast
5
+
6
+ from a2a.server.agent_execution import AgentExecutor, RequestContext
7
+ from a2a.utils import new_agent_text_message
8
+
9
+ from fast_agent import FastAgent
10
+
11
+ if TYPE_CHECKING:
12
+ from a2a.server.events import EventQueue
13
+ from a2a.types import AgentCard
14
+
15
+ from fast_agent.core.agent_app import AgentApp
16
+ from fast_agent.interfaces import AgentProtocol
17
+
18
+ DEFAULT_AGENT_NAME = "helper"
19
+
20
+ fast = FastAgent(
21
+ "A2A FastAgent Demo",
22
+ parse_cli_args=False,
23
+ quiet=True,
24
+ )
25
+
26
+
27
+ @fast.agent(
28
+ name=DEFAULT_AGENT_NAME,
29
+ instruction="You are a helpful AI agent answering incoming A2A messages.",
30
+ default=True,
31
+ )
32
+ async def helper() -> None:
33
+ """Default agent registered with FastAgent."""
34
+ pass
35
+
36
+
37
+ class FastAgentExecutor(AgentExecutor):
38
+ """AgentExecutor that proxies requests to a FastAgent runtime."""
39
+
40
+ def __init__(self, default_agent_name: str = DEFAULT_AGENT_NAME) -> None:
41
+ self._stack = AsyncExitStack()
42
+ self._agents: AgentApp | None = None
43
+ self._default_agent_name = default_agent_name
44
+
45
+ async def _agents_app(self) -> AgentApp:
46
+ """Ensure the FastAgent runtime is running and return the AgentApp."""
47
+ if self._agents is None:
48
+ self._agents = await self._stack.enter_async_context(fast.run())
49
+ return self._agents
50
+
51
+ async def _agent(self, agent_name: str | None = None) -> AgentProtocol:
52
+ """Return the requested agent or fall back to the default agent."""
53
+ app = await self._agents_app()
54
+ agents_map = cast("dict[str, AgentProtocol]", getattr(app, "_agents"))
55
+
56
+ if agent_name and agent_name in agents_map:
57
+ return agents_map[agent_name]
58
+
59
+ if self._default_agent_name and self._default_agent_name in agents_map:
60
+ return agents_map[self._default_agent_name]
61
+
62
+ for candidate in agents_map.values():
63
+ config = getattr(candidate, "config", None)
64
+ if config is not None and getattr(config, "default", False):
65
+ return candidate
66
+
67
+ return next(iter(agents_map.values()))
68
+
69
+ async def execute(
70
+ self,
71
+ context: RequestContext,
72
+ event_queue: EventQueue,
73
+ ) -> None:
74
+ message = context.get_user_input().strip()
75
+ if not message:
76
+ return
77
+
78
+ agent = await self._agent()
79
+ response = await agent.send(message)
80
+ await event_queue.enqueue_event(new_agent_text_message(response))
81
+
82
+ async def cancel(self, context: RequestContext, event_queue: EventQueue) -> None:
83
+ raise Exception("cancel not supported")
84
+
85
+ async def agent_card(self, agent_name: str | None = None) -> AgentCard:
86
+ """Return the FastAgent-provided AgentCard for the given agent."""
87
+ agent = await self._agent(agent_name)
88
+ return await agent.agent_card()
89
+
90
+ async def shutdown(self) -> None:
91
+ """Close the FastAgent runtime."""
92
+ await self._stack.aclose()
93
+ self._agents = None
@@ -0,0 +1,53 @@
1
+ import asyncio
2
+
3
+ from a2a.server.apps import A2AStarletteApplication
4
+ from a2a.server.request_handlers import DefaultRequestHandler
5
+ from a2a.server.tasks import InMemoryTaskStore
6
+ from a2a.types import AgentCard, TransportProtocol
7
+ from agent_executor import FastAgentExecutor
8
+ from uvicorn import Config, Server
9
+
10
+ HOST = "0.0.0.0"
11
+ PORT = 9999
12
+
13
+
14
+ def _with_server_url(card: AgentCard) -> AgentCard:
15
+ """Inject JSON-RPC transport details while preserving FastAgent metadata."""
16
+ base_url = f"http://localhost:{PORT}/"
17
+ return card.model_copy(
18
+ update={
19
+ "url": base_url,
20
+ "preferred_transport": TransportProtocol.jsonrpc,
21
+ "additional_interfaces": [],
22
+ "supports_authenticated_extended_card": False,
23
+ "default_input_modes": ["text"],
24
+ "default_output_modes": ["text"],
25
+ }
26
+ )
27
+
28
+
29
+ async def main() -> None:
30
+ executor = FastAgentExecutor()
31
+ agent_card = _with_server_url(await executor.agent_card())
32
+
33
+ request_handler = DefaultRequestHandler(
34
+ agent_executor=executor,
35
+ task_store=InMemoryTaskStore(),
36
+ )
37
+
38
+ server = A2AStarletteApplication(
39
+ agent_card=agent_card,
40
+ http_handler=request_handler,
41
+ )
42
+
43
+ config = Config(server.build(), host=HOST, port=PORT)
44
+ uvicorn_server = Server(config)
45
+
46
+ try:
47
+ await uvicorn_server.serve()
48
+ finally:
49
+ await executor.shutdown()
50
+
51
+
52
+ if __name__ == "__main__":
53
+ asyncio.run(main())
@@ -2,11 +2,11 @@ from contextlib import asynccontextmanager
2
2
 
3
3
  from fastapi import Body, FastAPI, HTTPException
4
4
 
5
+ from fast_agent import PromptMessageExtended
5
6
  from fast_agent.agents import McpAgent
6
7
  from fast_agent.agents.agent_types import AgentConfig
7
8
  from fast_agent.core import Core
8
9
  from fast_agent.core.direct_factory import get_model_factory
9
- from fast_agent.mcp import PromptMessageExtended
10
10
 
11
11
  core = Core(name="fast-agent core")
12
12
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fast-agent-mcp"
3
- version = "0.3.7"
3
+ version = "0.3.8"
4
4
  description = "Define, Prompt and Test MCP enabled Agents and Workflows"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -36,7 +36,7 @@ dependencies = [
36
36
  "opentelemetry-instrumentation-google-genai>=0.3b0",
37
37
  "tensorzero>=2025.7.5",
38
38
  "deprecated>=1.2.18",
39
- "a2a-sdk>=0.3.0",
39
+ "a2a-sdk>=0.3.6",
40
40
  "email-validator>=2.2.0",
41
41
  "pyperclip>=1.9.0",
42
42
  "keyring>=24.3.1",
@@ -45,7 +45,7 @@ class LlmAgent(LlmDecorator):
45
45
 
46
46
  This class provides LLM-specific functionality including UI display methods,
47
47
  tool call tracking, and chat interaction patterns while delegating core
48
- LLM operations to the attached AugmentedLLMProtocol.
48
+ LLM operations to the attached FastAgentLLMProtocol.
49
49
  """
50
50
 
51
51
  def __init__(
@@ -134,7 +134,9 @@ class LlmAgent(LlmDecorator):
134
134
 
135
135
  if additional_message is not None:
136
136
  additional_segments.append(
137
- additional_message if isinstance(additional_message, Text) else Text(str(additional_message))
137
+ additional_message
138
+ if isinstance(additional_message, Text)
139
+ else Text(str(additional_message))
138
140
  )
139
141
 
140
142
  additional_message_text = None
@@ -197,9 +199,7 @@ class LlmAgent(LlmDecorator):
197
199
  # TODO - manage error catch, recovery, pause
198
200
  result, summary = await self._generate_with_summary(messages, request_params, tools)
199
201
 
200
- summary_text = (
201
- Text(f"\n\n{summary.message}", style="dim red italic") if summary else None
202
- )
202
+ summary_text = Text(f"\n\n{summary.message}", style="dim red italic") if summary else None
203
203
 
204
204
  await self.show_assistant_message(result, additional_message=summary_text)
205
205
  return result
@@ -216,9 +216,7 @@ class LlmAgent(LlmDecorator):
216
216
  (result, message), summary = await self._structured_with_summary(
217
217
  messages, model, request_params
218
218
  )
219
- summary_text = (
220
- Text(f"\n\n{summary.message}", style="dim red italic") if summary else None
221
- )
219
+ summary_text = Text(f"\n\n{summary.message}", style="dim red italic") if summary else None
222
220
  await self.show_assistant_message(message=message, additional_message=summary_text)
223
221
  return result, message
224
222
 
@@ -57,7 +57,6 @@ from fast_agent.types import PromptMessageExtended, RequestParams
57
57
  # Define a TypeVar for models
58
58
  ModelT = TypeVar("ModelT", bound=BaseModel)
59
59
 
60
- # Define a TypeVar for AugmentedLLM and its subclasses
61
60
  LLM = TypeVar("LLM", bound=FastAgentLLMProtocol)
62
61
 
63
62
 
@@ -533,9 +532,7 @@ class LlmDecorator(AgentProtocol):
533
532
  if isinstance(block, EmbeddedResource):
534
533
  resource = getattr(block, "resource", None)
535
534
  mime = getattr(resource, "mimeType", None)
536
- if isinstance(resource, TextResourceContents) or (
537
- mime and is_text_mime_type(mime)
538
- ):
535
+ if isinstance(resource, TextResourceContents) or (mime and is_text_mime_type(mime)):
539
536
  return mime or "text/plain", "text"
540
537
  if mime and mime.startswith("image/"):
541
538
  return mime, "vision"
@@ -593,9 +590,7 @@ class LlmDecorator(AgentProtocol):
593
590
  entries.append(metadata_text)
594
591
  return entries
595
592
 
596
- def _build_removed_summary(
597
- self, removed: List[_RemovedBlock]
598
- ) -> RemovedContentSummary | None:
593
+ def _build_removed_summary(self, removed: List[_RemovedBlock]) -> RemovedContentSummary | None:
599
594
  if not removed:
600
595
  return None
601
596
 
@@ -2,7 +2,7 @@
2
2
  Base Agent class that implements the AgentProtocol interface.
3
3
 
4
4
  This class provides default implementations of the standard agent methods
5
- and delegates operations to an attached AugmentedLLMProtocol instance.
5
+ and delegates operations to an attached FastAgentLLMProtocol instance.
6
6
  """
7
7
 
8
8
  import asyncio
@@ -52,7 +52,6 @@ from fast_agent.types import PromptMessageExtended, RequestParams
52
52
  # Define a TypeVar for models
53
53
  ModelT = TypeVar("ModelT", bound=BaseModel)
54
54
 
55
- # Define a TypeVar for AugmentedLLM and its subclasses
56
55
  LLM = TypeVar("LLM", bound=FastAgentLLMProtocol)
57
56
 
58
57
  if TYPE_CHECKING:
@@ -67,7 +66,7 @@ class McpAgent(ABC, ToolAgent):
67
66
  A base Agent class that implements the AgentProtocol interface.
68
67
 
69
68
  This class provides default implementations of the standard agent methods
70
- and delegates LLM operations to an attached AugmentedLLMProtocol instance.
69
+ and delegates LLM operations to an attached FastAgentLLMProtocol instance.
71
70
  """
72
71
 
73
72
  def __init__(
@@ -293,7 +293,9 @@ def main(
293
293
 
294
294
  @app.command()
295
295
  def login(
296
- target: str = typer.Argument(..., help="Server name (from config) or identity (base URL)"),
296
+ target: Optional[str] = typer.Argument(
297
+ None, help="Server name (from config) or identity (base URL)"
298
+ ),
297
299
  transport: Optional[str] = typer.Option(
298
300
  None, "--transport", help="Transport for identity mode: http or sse"
299
301
  ),
@@ -311,6 +313,17 @@ def login(
311
313
  cfg = None
312
314
  resolved_transport = None
313
315
 
316
+ if target is None or not target.strip():
317
+ typer.echo("Provide a server name or identity URL to log in.")
318
+ typer.echo(
319
+ "Example: `fast-agent auth login my-server` "
320
+ "or `fast-agent auth login https://example.com`."
321
+ )
322
+ typer.echo("Run `fast-agent auth login --help` for more details.")
323
+ raise typer.Exit(1)
324
+
325
+ target = target.strip()
326
+
314
327
  if "://" in target:
315
328
  # Identity mode
316
329
  base = _derive_base_server_url(target)
@@ -55,7 +55,8 @@ def convert_log_event(event: Event) -> "ProgressEvent | None":
55
55
  if progress_message: # Only override if message is non-empty
56
56
  details = progress_message
57
57
 
58
- elif "augmented_llm" in namespace:
58
+ # TODO: there must be a better way :D?!
59
+ elif "llm" in namespace:
59
60
  model = event_data.get("model", "")
60
61
 
61
62
  # For all augmented_llm events, put model info in details column
@@ -47,7 +47,7 @@ ModelT = TypeVar("ModelT", bound=BaseModel)
47
47
 
48
48
 
49
49
  class LLMFactoryProtocol(Protocol):
50
- """Protocol for LLM factory functions that create AugmentedLLM instances."""
50
+ """Protocol for LLM factory functions that create FastAgentLLM instances."""
51
51
 
52
52
  def __call__(self, agent: "LlmAgentProtocol", **kwargs: Any) -> "FastAgentLLMProtocol": ...
53
53
 
@@ -59,7 +59,7 @@ class ModelFactoryFunctionProtocol(Protocol):
59
59
 
60
60
 
61
61
  class FastAgentLLMProtocol(Protocol):
62
- """Protocol defining the interface for augmented LLMs"""
62
+ """Protocol defining the interface for LLMs"""
63
63
 
64
64
  async def structured(
65
65
  self,
@@ -164,7 +164,11 @@ class ModelDatabase:
164
164
  )
165
165
 
166
166
  # FIXME: xAI has not documented the max output tokens for Grok 4. Using Grok 3 as a placeholder. Will need to update when available (if ever)
167
- GROK_4 = ModelParameters(context_window=256000, max_output_tokens=16385, tokenizes=XAI_VISION)
167
+ GROK_4 = ModelParameters(context_window=256000, max_output_tokens=16385, tokenizes=TEXT_ONLY)
168
+
169
+ GROK_4_VLM = ModelParameters(
170
+ context_window=2000000, max_output_tokens=16385, tokenizes=XAI_VISION
171
+ )
168
172
 
169
173
  # Source for Grok 3 max output: https://www.reddit.com/r/grok/comments/1j7209p/exploring_grok_3_beta_output_capacity_a_simple/
170
174
  # xAI does not document Grok 3 max output tokens, using the above source as a reference.
@@ -240,6 +244,8 @@ class ModelDatabase:
240
244
  "gemini-2.5-flash-preview-05-20": GEMINI_FLASH,
241
245
  "gemini-2.5-pro-preview-05-06": GEMINI_PRO,
242
246
  # xAI Grok Models
247
+ "grok-4-fast-reasoning": GROK_4_VLM,
248
+ "grok-4-fast-non-reasoning": GROK_4_VLM,
243
249
  "grok-4": GROK_4,
244
250
  "grok-4-0709": GROK_4,
245
251
  "grok-3": GROK_3,
@@ -12,9 +12,6 @@ from fast_agent.llm.internal.slow import SlowLLM
12
12
  from fast_agent.llm.provider_types import Provider
13
13
  from fast_agent.types import RequestParams
14
14
 
15
- # from fast_agent.workflows.llm.augmented_llm_deepseek import DeekSeekAugmentedLLM
16
-
17
-
18
15
  # Type alias for LLM classes
19
16
  LLMClass = Union[Type[PassthroughLLM], Type[PlaybackLLM], Type[SilentLLM], Type[SlowLLM], type]
20
17
 
@@ -123,6 +120,8 @@ class ModelFactory:
123
120
  "kimi": "groq.moonshotai/kimi-k2-instruct-0905",
124
121
  "gpt-oss": "groq.openai/gpt-oss-120b",
125
122
  "gpt-oss-20b": "groq.openai/gpt-oss-20b",
123
+ "grok-4-fast": "xai.grok-4-fast-non-reasoning",
124
+ "grok-4-fast-reasoning": "xai.grok-4-fast-reasoning",
126
125
  }
127
126
 
128
127
  @staticmethod
@@ -126,7 +126,7 @@ class ModelCapabilities:
126
126
 
127
127
  class BedrockLLM(FastAgentLLM[BedrockMessageParam, BedrockMessage]):
128
128
  """
129
- AWS Bedrock implementation of AugmentedLLM using the Converse API.
129
+ AWS Bedrock implementation of FastAgentLLM using the Converse API.
130
130
  Supports all Bedrock models including Nova, Claude, Meta, etc.
131
131
  """
132
132
 
@@ -36,10 +36,8 @@ GOOGLE_EXCLUDE_FIELDS = {
36
36
  FastAgentLLM.PARAM_MESSAGES, # Handled by contents
37
37
  FastAgentLLM.PARAM_MODEL, # Handled during client/call setup
38
38
  FastAgentLLM.PARAM_SYSTEM_PROMPT, # Handled by system_instruction in config
39
- # AugmentedLLM.PARAM_PARALLEL_TOOL_CALLS, # Handled by tool_config in config
40
- FastAgentLLM.PARAM_USE_HISTORY, # Handled by AugmentedLLM base / this class's logic
39
+ FastAgentLLM.PARAM_USE_HISTORY, # Handled by FastAgentLLM base / this class's logic
41
40
  FastAgentLLM.PARAM_MAX_ITERATIONS, # Handled by this class's loop
42
- # Add any other OpenAI-specific params not applicable to google.genai
43
41
  FastAgentLLM.PARAM_MCP_METADATA,
44
42
  }.union(FastAgentLLM.BASE_EXCLUDE_FIELDS)
45
43
 
@@ -23,7 +23,7 @@ DEFAULT_AZURE_API_VERSION = "2024-10-21"
23
23
 
24
24
  class AzureOpenAILLM(OpenAILLM):
25
25
  """
26
- Azure OpenAI implementation extending OpenAIAugmentedLLM.
26
+ Azure OpenAI implementation extending OpenAILLM.
27
27
  Handles both API Key and DefaultAzureCredential authentication.
28
28
  """
29
29
 
@@ -26,7 +26,7 @@ class TensorZeroOpenAILLM(OpenAILLM):
26
26
  self._t0_function_name = kwargs.get("model", "")
27
27
 
28
28
  super().__init__(*args, provider=Provider.TENSORZERO, **kwargs)
29
- self.logger.info("TensorZeroOpenAIAugmentedLLM initialized.")
29
+ self.logger.info("TensorZeroOpenAILLM initialized.")
30
30
 
31
31
  def _initialize_default_params(self, kwargs: dict) -> RequestParams:
32
32
  """
@@ -11,7 +11,7 @@ from pydantic import Field
11
11
 
12
12
  class RequestParams(CreateMessageRequestParams):
13
13
  """
14
- Parameters to configure the AugmentedLLM 'generate' requests.
14
+ Parameters to configure the FastAgentLLM 'generate' requests.
15
15
  """
16
16
 
17
17
  messages: List[SamplingMessage] = Field(exclude=True, default=[])
File without changes
File without changes