fast-agent-mcp 0.2.32__tar.gz → 0.2.33__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 (201) hide show
  1. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/PKG-INFO +1 -1
  2. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/pyproject.toml +1 -1
  3. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/config.py +40 -4
  4. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/.gitignore +0 -0
  5. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/LICENSE +0 -0
  6. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/README.md +0 -0
  7. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/azure-openai/fastagent.config.yaml +0 -0
  8. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/custom-agents/agent.py +0 -0
  9. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/custom-agents/fastagent.config.yaml +0 -0
  10. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/data-analysis/analysis-campaign.py +0 -0
  11. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/data-analysis/analysis.py +0 -0
  12. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/data-analysis/fastagent.config.yaml +0 -0
  13. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  14. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/state-transfer/agent_one.py +0 -0
  15. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/state-transfer/agent_two.py +0 -0
  16. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  17. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/vision-examples/example1.py +0 -0
  18. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/vision-examples/example2.py +0 -0
  19. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/vision-examples/example3.py +0 -0
  20. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/mcp/vision-examples/fastagent.config.yaml +0 -0
  21. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/otel/agent.py +0 -0
  22. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/otel/agent2.py +0 -0
  23. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/otel/docker-compose.yaml +0 -0
  24. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/otel/fastagent.config.yaml +0 -0
  25. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/researcher/fastagent.config.yaml +0 -0
  26. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/researcher/researcher-eval.py +0 -0
  27. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/researcher/researcher-imp.py +0 -0
  28. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/researcher/researcher.py +0 -0
  29. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/README.md +0 -0
  30. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/agent.py +0 -0
  31. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/docker-compose.yml +0 -0
  32. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/fastagent.config.yaml +0 -0
  33. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/image_demo.py +0 -0
  34. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  35. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/tensorzero/simple_agent.py +0 -0
  36. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/chaining.py +0 -0
  37. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/evaluator.py +0 -0
  38. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/fastagent.config.yaml +0 -0
  39. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/graded_report.md +0 -0
  40. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/human_input.py +0 -0
  41. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/orchestrator.py +0 -0
  42. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/parallel.py +0 -0
  43. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/router.py +0 -0
  44. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/short_story.md +0 -0
  45. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/examples/workflows/short_story.txt +0 -0
  46. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/__init__.py +0 -0
  47. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/__init__.py +0 -0
  48. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/agent.py +0 -0
  49. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/base_agent.py +0 -0
  50. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/__init__.py +0 -0
  51. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/chain_agent.py +0 -0
  52. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/evaluator_optimizer.py +0 -0
  53. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/orchestrator_agent.py +0 -0
  54. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/orchestrator_models.py +0 -0
  55. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/orchestrator_prompts.py +0 -0
  56. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/parallel_agent.py +0 -0
  57. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/agents/workflow/router_agent.py +0 -0
  58. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/app.py +0 -0
  59. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/__init__.py +0 -0
  60. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/__main__.py +0 -0
  61. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/commands/check_config.py +0 -0
  62. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/commands/go.py +0 -0
  63. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/commands/quickstart.py +0 -0
  64. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/commands/setup.py +0 -0
  65. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/commands/url_parser.py +0 -0
  66. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/main.py +0 -0
  67. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/cli/terminal.py +0 -0
  68. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/console.py +0 -0
  69. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/context.py +0 -0
  70. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/context_dependent.py +0 -0
  71. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/__init__.py +0 -0
  72. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/agent_app.py +0 -0
  73. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/agent_types.py +0 -0
  74. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/direct_decorators.py +0 -0
  75. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/direct_factory.py +0 -0
  76. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/enhanced_prompt.py +0 -0
  77. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/error_handling.py +0 -0
  78. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/exceptions.py +0 -0
  79. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/fastagent.py +0 -0
  80. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/interactive_prompt.py +0 -0
  81. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/mcp_content.py +0 -0
  82. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/prompt.py +0 -0
  83. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/request_params.py +0 -0
  84. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/core/validation.py +0 -0
  85. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/event_progress.py +0 -0
  86. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/executor/__init__.py +0 -0
  87. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/executor/executor.py +0 -0
  88. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/executor/task_registry.py +0 -0
  89. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/executor/workflow_signal.py +0 -0
  90. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/human_input/__init__.py +0 -0
  91. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/human_input/handler.py +0 -0
  92. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/human_input/types.py +0 -0
  93. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/__init__.py +0 -0
  94. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/augmented_llm.py +0 -0
  95. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/augmented_llm_passthrough.py +0 -0
  96. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/augmented_llm_playback.py +0 -0
  97. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/augmented_llm_slow.py +0 -0
  98. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/memory.py +0 -0
  99. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/model_factory.py +0 -0
  100. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/prompt_utils.py +0 -0
  101. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/provider_key_manager.py +0 -0
  102. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/provider_types.py +0 -0
  103. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/__init__.py +0 -0
  104. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/anthropic_utils.py +0 -0
  105. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_aliyun.py +0 -0
  106. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_anthropic.py +0 -0
  107. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_azure.py +0 -0
  108. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_deepseek.py +0 -0
  109. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_generic.py +0 -0
  110. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_google_native.py +0 -0
  111. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_google_oai.py +0 -0
  112. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_openai.py +0 -0
  113. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_openrouter.py +0 -0
  114. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/augmented_llm_tensorzero.py +0 -0
  115. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/google_converter.py +0 -0
  116. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/multipart_converter_anthropic.py +0 -0
  117. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/multipart_converter_openai.py +0 -0
  118. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/multipart_converter_tensorzero.py +0 -0
  119. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/openai_multipart.py +0 -0
  120. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/openai_utils.py +0 -0
  121. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/sampling_converter_anthropic.py +0 -0
  122. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/providers/sampling_converter_openai.py +0 -0
  123. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/sampling_converter.py +0 -0
  124. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/llm/sampling_format_converter.py +0 -0
  125. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/__init__.py +0 -0
  126. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/events.py +0 -0
  127. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/json_serializer.py +0 -0
  128. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/listeners.py +0 -0
  129. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/logger.py +0 -0
  130. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/rich_progress.py +0 -0
  131. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/logging/transport.py +0 -0
  132. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/__init__.py +0 -0
  133. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/common.py +0 -0
  134. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/gen_client.py +0 -0
  135. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/helpers/__init__.py +0 -0
  136. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/helpers/content_helpers.py +0 -0
  137. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/helpers/server_config_helpers.py +0 -0
  138. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/hf_auth.py +0 -0
  139. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/interfaces.py +0 -0
  140. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/logger_textio.py +0 -0
  141. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/mcp_agent_client_session.py +0 -0
  142. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/mcp_aggregator.py +0 -0
  143. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/mcp_connection_manager.py +0 -0
  144. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/mime_utils.py +0 -0
  145. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompt_message_multipart.py +0 -0
  146. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompt_render.py +0 -0
  147. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompt_serialization.py +0 -0
  148. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/__init__.py +0 -0
  149. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/__main__.py +0 -0
  150. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/prompt_constants.py +0 -0
  151. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/prompt_helpers.py +0 -0
  152. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/prompt_load.py +0 -0
  153. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/prompt_server.py +0 -0
  154. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/prompts/prompt_template.py +0 -0
  155. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/resource_utils.py +0 -0
  156. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp/sampling.py +0 -0
  157. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp_server/__init__.py +0 -0
  158. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp_server/agent_server.py +0 -0
  159. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/mcp_server_registry.py +0 -0
  160. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/progress_display.py +0 -0
  161. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/data-analysis/analysis-campaign.py +0 -0
  162. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/data-analysis/analysis.py +0 -0
  163. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
  164. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  165. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/in_dev/agent_build.py +0 -0
  166. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/in_dev/css-LICENSE.txt +0 -0
  167. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/in_dev/slides.py +0 -0
  168. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/agent.py +0 -0
  169. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/fastagent.config.yaml +0 -0
  170. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/history_transfer.py +0 -0
  171. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/job.py +0 -0
  172. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/prompt_category.py +0 -0
  173. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/prompt_sizing.py +0 -0
  174. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/simple.txt +0 -0
  175. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/sizer.py +0 -0
  176. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/internal/social.py +0 -0
  177. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/mcp/state-transfer/agent_one.py +0 -0
  178. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/mcp/state-transfer/agent_two.py +0 -0
  179. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  180. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  181. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/__init__.py +0 -0
  182. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/agent.py +0 -0
  183. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/delimited_prompt.txt +0 -0
  184. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/fastagent.config.yaml +0 -0
  185. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/image_server.py +0 -0
  186. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/prompt1.txt +0 -0
  187. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/prompting/work_with_image.py +0 -0
  188. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
  189. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/researcher/researcher-eval.py +0 -0
  190. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/researcher/researcher-imp.py +0 -0
  191. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/researcher/researcher.py +0 -0
  192. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/chaining.py +0 -0
  193. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/evaluator.py +0 -0
  194. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
  195. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/human_input.py +0 -0
  196. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/orchestrator.py +0 -0
  197. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/parallel.py +0 -0
  198. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/router.py +0 -0
  199. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/resources/examples/workflows/short_story.txt +0 -0
  200. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/tools/tool_definition.py +0 -0
  201. {fast_agent_mcp-0.2.32 → fast_agent_mcp-0.2.33}/src/mcp_agent/ui/console_display.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.2.32
3
+ Version: 0.2.33
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fast-agent-mcp"
3
- version = "0.2.32"
3
+ version = "0.2.33"
4
4
  description = "Define, Prompt and Test MCP enabled Agents and Workflows"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -3,8 +3,10 @@ Reading settings from environment variables and providing a settings object
3
3
  for the application configuration.
4
4
  """
5
5
 
6
+ import os
7
+ import re
6
8
  from pathlib import Path
7
- from typing import Dict, List, Literal, Optional
9
+ from typing import Any, Dict, List, Literal, Optional
8
10
 
9
11
  from pydantic import BaseModel, ConfigDict, field_validator
10
12
  from pydantic_settings import BaseSettings, SettingsConfigDict
@@ -365,6 +367,36 @@ _settings: Settings | None = None
365
367
  def get_settings(config_path: str | None = None) -> Settings:
366
368
  """Get settings instance, automatically loading from config file if available."""
367
369
 
370
+ def resolve_env_vars(config_item: Any) -> Any:
371
+ """Recursively resolve environment variables in config data."""
372
+ if isinstance(config_item, dict):
373
+ return {k: resolve_env_vars(v) for k, v in config_item.items()}
374
+ elif isinstance(config_item, list):
375
+ return [resolve_env_vars(i) for i in config_item]
376
+ elif isinstance(config_item, str):
377
+ # Regex to find ${ENV_VAR} or ${ENV_VAR:default_value}
378
+ pattern = re.compile(r"\$\{([^}]+)\}")
379
+
380
+ def replace_match(match: re.Match) -> str:
381
+ var_name_with_default = match.group(1)
382
+ if ":" in var_name_with_default:
383
+ var_name, default_value = var_name_with_default.split(":", 1)
384
+ return os.getenv(var_name, default_value)
385
+ else:
386
+ var_name = var_name_with_default
387
+ env_value = os.getenv(var_name)
388
+ if env_value is None:
389
+ # Optionally, raise an error or return the placeholder if the env var is not set
390
+ # For now, returning the placeholder to avoid breaking if not set and no default
391
+ # print(f"Warning: Environment variable {var_name} not set and no default provided.")
392
+ return match.group(0)
393
+ return env_value
394
+
395
+ # Replace all occurrences
396
+ resolved_value = pattern.sub(replace_match, config_item)
397
+ return resolved_value
398
+ return config_item
399
+
368
400
  def deep_merge(base: dict, update: dict) -> dict:
369
401
  """Recursively merge two dictionaries, preserving nested structures."""
370
402
  merged = base.copy()
@@ -409,12 +441,14 @@ def get_settings(config_path: str | None = None) -> Settings:
409
441
  # Load main config
410
442
  with open(config_file, "r", encoding="utf-8") as f:
411
443
  yaml_settings = yaml.safe_load(f) or {}
412
- merged_settings = yaml_settings
444
+ # Resolve environment variables in the loaded YAML settings
445
+ resolved_yaml_settings = resolve_env_vars(yaml_settings)
446
+ merged_settings = resolved_yaml_settings
413
447
  # Look for secrets files recursively up the directory tree
414
448
  # but stop after finding the first one
415
449
  current_dir = config_file.parent
416
450
  found_secrets = False
417
- # Start with the absolute path of the config file's directory
451
+ # Start with the absolute path of the config file\'s directory
418
452
  current_dir = config_file.parent.resolve()
419
453
 
420
454
  while current_dir != current_dir.parent and not found_secrets:
@@ -425,7 +459,9 @@ def get_settings(config_path: str | None = None) -> Settings:
425
459
  if secrets_file.exists():
426
460
  with open(secrets_file, "r", encoding="utf-8") as f:
427
461
  yaml_secrets = yaml.safe_load(f) or {}
428
- merged_settings = deep_merge(merged_settings, yaml_secrets)
462
+ # Resolve environment variables in the loaded secrets YAML
463
+ resolved_secrets_yaml = resolve_env_vars(yaml_secrets)
464
+ merged_settings = deep_merge(merged_settings, resolved_secrets_yaml)
429
465
  found_secrets = True
430
466
  break
431
467
  if not found_secrets:
File without changes