fast-agent-mcp 0.2.57__tar.gz → 0.2.58__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.
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/PKG-INFO +2 -2
- fast_agent_mcp-0.2.58/examples/bedrock/fast-agent.config.yaml +24 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/elicitation_forms_server.py +25 -3
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/pyproject.toml +9 -2
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/config.py +3 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/elicitation_form.py +45 -33
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/augmented_llm.py +1 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_anthropic.py +1 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_bedrock.py +890 -602
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_google_native.py +1 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_openai.py +1 -0
- fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/bedrock_utils.py +216 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py +25 -3
- fast_agent_mcp-0.2.57/examples/bedrock/fast-agent.config.yaml +0 -13
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/.gitignore +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/LICENSE +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/README.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/azure-openai/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/custom-agents/agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/custom-agents/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/data-analysis/analysis-campaign.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/data-analysis/analysis.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/elicitation_account_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/elicitation_game_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/forms_demo.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/game_character.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/game_character_handler.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/elicitations/tool_call.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/mcp-filtering/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/mcp-filtering/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/mcp-filtering/mcp_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/mcp-filtering/test_mcp_filtering.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/state-transfer/agent_one.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/state-transfer/agent_two.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/vision-examples/cat.png +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/vision-examples/example1.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/vision-examples/example2.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/vision-examples/example3.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/mcp/vision-examples/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/otel/agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/otel/agent2.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/otel/docker-compose.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/otel/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/researcher/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/researcher/researcher-eval.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/researcher/researcher-imp.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/researcher/researcher.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/.env.sample +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/Makefile +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/README.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/demo_images/clam.jpg +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/demo_images/crab.png +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/demo_images/shrimp.png +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/docker-compose.yml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/image_demo.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/mcp_server/Dockerfile +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/mcp_server/mcp_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/mcp_server/pyproject.toml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/simple_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/chaining.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/evaluator.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/graded_report.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/human_input.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/orchestrator.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/parallel.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/router.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/short_story.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/examples/workflows/short_story.txt +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/hatch_build.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/base_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/chain_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/evaluator_optimizer.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/iterative_planner.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/orchestrator_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/orchestrator_models.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/orchestrator_prompts.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/parallel_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/agents/workflow/router_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/app.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/__main__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/commands/check_config.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/commands/go.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/commands/quickstart.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/commands/server_helpers.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/commands/setup.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/commands/url_parser.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/constants.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/main.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/cli/terminal.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/console.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/context.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/context_dependent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/agent_app.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/agent_types.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/direct_decorators.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/direct_factory.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/enhanced_prompt.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/error_handling.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/exceptions.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/fastagent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/interactive_prompt.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/mcp_content.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/mermaid_utils.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/prompt.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/request_params.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/usage_display.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/core/validation.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/event_progress.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/executor/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/executor/executor.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/executor/task_registry.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/executor/workflow_signal.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/elicitation_forms.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/elicitation_handler.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/elicitation_state.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/form_fields.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/handler.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/simple_form.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/types.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/augmented_llm_passthrough.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/augmented_llm_playback.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/augmented_llm_silent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/augmented_llm_slow.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/memory.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/model_database.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/model_factory.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/prompt_utils.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/provider_key_manager.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/provider_types.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/anthropic_utils.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_aliyun.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_azure.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_deepseek.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_generic.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_google_oai.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_groq.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_openrouter.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_tensorzero_openai.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/augmented_llm_xai.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/google_converter.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/multipart_converter_anthropic.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/multipart_converter_openai.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/openai_multipart.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/openai_utils.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/sampling_converter_anthropic.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/providers/sampling_converter_openai.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/sampling_converter.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/sampling_format_converter.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/llm/usage_tracking.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/events.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/json_serializer.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/listeners.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/logger.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/rich_progress.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/logging/transport.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/common.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/elicitation_factory.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/elicitation_handlers.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/gen_client.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/helpers/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/helpers/content_helpers.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/helpers/server_config_helpers.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/hf_auth.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/interfaces.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/logger_textio.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/mcp_agent_client_session.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/mcp_aggregator.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/mcp_connection_manager.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/mime_utils.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompt_message_multipart.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompt_render.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompt_serialization.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/__main__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/prompt_constants.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/prompt_helpers.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/prompt_load.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/prompt_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/prompts/prompt_template.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/resource_utils.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp/sampling.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp_server/__init__.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp_server/agent_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/mcp_server_registry.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/progress_display.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/py.typed +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/data-analysis/analysis-campaign.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/data-analysis/analysis.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/elicitation_account_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/elicitation_game_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/forms_demo.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/game_character.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/game_character_handler.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/elicitations/tool_call.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/state-transfer/agent_one.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/state-transfer/agent_two.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/researcher/researcher-eval.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/researcher/researcher-imp.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/researcher/researcher.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/.env.sample +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/Makefile +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/README.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/demo_images/crab.png +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/docker-compose.yml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/image_demo.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/mcp_server/.python-version +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/mcp_server/Dockerfile +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/mcp_server/mcp_server.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/mcp_server/pyproject.toml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/simple_agent.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/chaining.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/evaluator.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/graded_report.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/human_input.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/orchestrator.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/parallel.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/router.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/short_story.md +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/resources/examples/workflows/short_story.txt +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/tools/tool_definition.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/ui/console_display.py +0 -0
- {fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/ui/console_display_legacy.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fast-agent-mcp
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.58
|
|
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
|
|
@@ -218,7 +218,7 @@ Requires-Dist: deprecated>=1.2.18
|
|
|
218
218
|
Requires-Dist: email-validator>=2.2.0
|
|
219
219
|
Requires-Dist: fastapi>=0.115.6
|
|
220
220
|
Requires-Dist: google-genai>=1.27.0
|
|
221
|
-
Requires-Dist: mcp==1.
|
|
221
|
+
Requires-Dist: mcp==1.13.1
|
|
222
222
|
Requires-Dist: openai>=1.99.9
|
|
223
223
|
Requires-Dist: opentelemetry-distro>=0.55b0
|
|
224
224
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Example minimal fast-agent.config.yaml for Bedrock
|
|
2
|
+
|
|
3
|
+
# List of supported models: https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html
|
|
4
|
+
# Model string format: bedrock.<model_id>.<reasoning_effort>
|
|
5
|
+
# Examples:
|
|
6
|
+
# bedrock.amazon.nova-lite-v1:0 # No reasoning
|
|
7
|
+
# bedrock.claude-sonnet-4-0.high # High reasoning effort
|
|
8
|
+
# bedrock.anthropic.claude-3-7-sonnet-20250219-v1:0.medium # Medium reasoning
|
|
9
|
+
default_model: bedrock.amazon.nova-lite-v1:0
|
|
10
|
+
|
|
11
|
+
# Bedrock uses the AWS credentials provider chain to authenticate.
|
|
12
|
+
# This can be accomplished with aws sso login on local machines,
|
|
13
|
+
# or by IAM roles within AWS.
|
|
14
|
+
# see https://docs.aws.amazon.com/res/latest/ug/sso-idc.html
|
|
15
|
+
bedrock:
|
|
16
|
+
region: "us-east-1" # required
|
|
17
|
+
profile: "default" # optional, defaults to "default" - only needed if you have multiple profiles.
|
|
18
|
+
# Only needed on local machines, not on AWS.
|
|
19
|
+
|
|
20
|
+
# Default reasoning effort for all Bedrock models (can be overridden in model string)
|
|
21
|
+
# Options: "minimal" (off), "low" (512 tokens), "medium" (1024 tokens), "high" (2048 tokens)
|
|
22
|
+
# Note: Only Claude 4, Claude 3.7 Sonnet, and DeepSeek-R1 support reasoning
|
|
23
|
+
# Other models will automatically fallback to no reasoning if unsupported
|
|
24
|
+
reasoning_effort: "minimal" # Default: disabled
|
|
@@ -100,11 +100,25 @@ async def product_review() -> ReadResourceResult:
|
|
|
100
100
|
},
|
|
101
101
|
)
|
|
102
102
|
review_text: str = Field(
|
|
103
|
-
description="Tell us about your experience",
|
|
103
|
+
description="Tell us about your experience",
|
|
104
|
+
default="""Great product!
|
|
105
|
+
Here's what I loved:
|
|
106
|
+
|
|
107
|
+
- Excellent build quality
|
|
108
|
+
- Fast shipping
|
|
109
|
+
- Works as advertised
|
|
110
|
+
|
|
111
|
+
One minor issue:
|
|
112
|
+
- Instructions could be clearer
|
|
113
|
+
|
|
114
|
+
Overall, highly recommended!""",
|
|
115
|
+
min_length=10,
|
|
116
|
+
max_length=1000
|
|
104
117
|
)
|
|
105
118
|
|
|
106
119
|
result = await mcp.get_context().elicit(
|
|
107
|
-
"Share your product review - Help others make informed decisions!",
|
|
120
|
+
"Share your product review - Help others make informed decisions!",
|
|
121
|
+
schema=ProductReview,
|
|
108
122
|
)
|
|
109
123
|
|
|
110
124
|
match result:
|
|
@@ -140,6 +154,7 @@ async def account_settings() -> ReadResourceResult:
|
|
|
140
154
|
email_notifications: bool = Field(True, description="Receive email notifications?")
|
|
141
155
|
marketing_emails: bool = Field(False, description="Subscribe to marketing emails?")
|
|
142
156
|
theme: str = Field(
|
|
157
|
+
"dark",
|
|
143
158
|
description="Choose your preferred theme",
|
|
144
159
|
json_schema_extra={
|
|
145
160
|
"enum": ["light", "dark", "auto"],
|
|
@@ -147,7 +162,9 @@ async def account_settings() -> ReadResourceResult:
|
|
|
147
162
|
},
|
|
148
163
|
)
|
|
149
164
|
privacy_public: bool = Field(False, description="Make your profile public?")
|
|
150
|
-
items_per_page: int = Field(
|
|
165
|
+
items_per_page: int = Field(
|
|
166
|
+
25, description="Items to show per page (10-100)", ge=10, le=100
|
|
167
|
+
)
|
|
151
168
|
|
|
152
169
|
result = await mcp.get_context().elicit("Update your account settings", schema=AccountSettings)
|
|
153
170
|
|
|
@@ -182,7 +199,11 @@ async def service_appointment() -> ReadResourceResult:
|
|
|
182
199
|
|
|
183
200
|
class ServiceAppointment(BaseModel):
|
|
184
201
|
customer_name: str = Field(description="Your full name", min_length=2, max_length=50)
|
|
202
|
+
phone_number: str = Field(
|
|
203
|
+
"555-", description="Contact phone number", min_length=10, max_length=20
|
|
204
|
+
)
|
|
185
205
|
vehicle_type: str = Field(
|
|
206
|
+
default="sedan",
|
|
186
207
|
description="What type of vehicle do you have?",
|
|
187
208
|
json_schema_extra={
|
|
188
209
|
"enum": ["sedan", "suv", "truck", "motorcycle", "other"],
|
|
@@ -205,6 +226,7 @@ async def service_appointment() -> ReadResourceResult:
|
|
|
205
226
|
lines = [
|
|
206
227
|
"🔧 Service Appointment Scheduled!",
|
|
207
228
|
f"👤 Customer: {data.customer_name}",
|
|
229
|
+
f"📞 Phone: {data.phone_number}",
|
|
208
230
|
f"🚗 Vehicle: {data.vehicle_type.title()}",
|
|
209
231
|
f"🚙 Loaner needed: {'Yes' if data.needs_loaner else 'No'}",
|
|
210
232
|
f"📅 Appointment: {data.appointment_time}",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fast-agent-mcp"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.58"
|
|
4
4
|
description = "Define, Prompt and Test MCP enabled Agents and Workflows"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -15,7 +15,7 @@ classifiers = [
|
|
|
15
15
|
requires-python = ">=3.13"
|
|
16
16
|
dependencies = [
|
|
17
17
|
"fastapi>=0.115.6",
|
|
18
|
-
"mcp==1.
|
|
18
|
+
"mcp==1.13.1",
|
|
19
19
|
"opentelemetry-distro>=0.55b0",
|
|
20
20
|
"opentelemetry-exporter-otlp-proto-http>=1.7.0",
|
|
21
21
|
"pydantic-settings>=2.7.0",
|
|
@@ -89,6 +89,13 @@ markers = [
|
|
|
89
89
|
"integration: marks tests as integration tests",
|
|
90
90
|
"simulated_endpoints: marks tests that use simulated external endpoints"
|
|
91
91
|
]
|
|
92
|
+
|
|
93
|
+
# Filter out utcnow depreciation warnings from the boto3 library
|
|
94
|
+
filterwarnings = [
|
|
95
|
+
"ignore:datetime\\.datetime\\.utcnow\\(\\) is deprecated.*:DeprecationWarning:botocore\\.auth",
|
|
96
|
+
"ignore:datetime\\.datetime\\.utcnow\\(\\) is deprecated.*:DeprecationWarning:botocore\\.endpoint$",
|
|
97
|
+
]
|
|
98
|
+
|
|
92
99
|
# Other pytest options can go here too
|
|
93
100
|
testpaths = ["test", "integration_tests"]
|
|
94
101
|
|
|
@@ -276,6 +276,9 @@ class BedrockSettings(BaseModel):
|
|
|
276
276
|
profile: str | None = None
|
|
277
277
|
"""AWS profile to use for authentication"""
|
|
278
278
|
|
|
279
|
+
reasoning_effort: Literal["minimal", "low", "medium", "high"] = "minimal"
|
|
280
|
+
"""Default reasoning effort for Bedrock models. Can be overridden in model string (e.g., bedrock.claude-sonnet-4-0.high)"""
|
|
281
|
+
|
|
279
282
|
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
|
|
280
283
|
|
|
281
284
|
|
{fast_agent_mcp-0.2.57 → fast_agent_mcp-0.2.58}/src/mcp_agent/human_input/elicitation_form.py
RENAMED
|
@@ -5,9 +5,7 @@ from typing import Any, Dict, Optional
|
|
|
5
5
|
|
|
6
6
|
from mcp.types import ElicitRequestedSchema
|
|
7
7
|
from prompt_toolkit import Application
|
|
8
|
-
from prompt_toolkit.application.current import get_app
|
|
9
8
|
from prompt_toolkit.buffer import Buffer
|
|
10
|
-
from prompt_toolkit.filters import Condition
|
|
11
9
|
from prompt_toolkit.formatted_text import FormattedText
|
|
12
10
|
from prompt_toolkit.key_binding import KeyBindings
|
|
13
11
|
from prompt_toolkit.key_binding.bindings.focus import focus_next, focus_previous
|
|
@@ -327,16 +325,21 @@ class ElicitationForm:
|
|
|
327
325
|
def focus_previous_left(event):
|
|
328
326
|
focus_previous(event)
|
|
329
327
|
|
|
330
|
-
#
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
@kb.add("c-m", filter=not_in_multiline) # Enter to submit only when not in multiline
|
|
328
|
+
# Enter always submits
|
|
329
|
+
@kb.add("c-m")
|
|
334
330
|
def submit(event):
|
|
335
331
|
self._accept()
|
|
336
332
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
333
|
+
# Ctrl+J inserts newlines
|
|
334
|
+
@kb.add("c-j")
|
|
335
|
+
def insert_newline(event):
|
|
336
|
+
# Insert a newline at the cursor position
|
|
337
|
+
event.current_buffer.insert_text('\n')
|
|
338
|
+
# Mark this field as multiline when user adds a newline
|
|
339
|
+
for field_name, widget in self.field_widgets.items():
|
|
340
|
+
if isinstance(widget, Buffer) and widget == event.current_buffer:
|
|
341
|
+
self.multiline_fields.add(field_name)
|
|
342
|
+
break
|
|
340
343
|
|
|
341
344
|
# ESC should ALWAYS cancel immediately, no matter what
|
|
342
345
|
@kb.add("escape", eager=True, is_global=True)
|
|
@@ -353,7 +356,7 @@ class ElicitationForm:
|
|
|
353
356
|
[
|
|
354
357
|
(
|
|
355
358
|
"class:bottom-toolbar.text",
|
|
356
|
-
" <TAB
|
|
359
|
+
" <TAB>/↑↓→← navigate. <ENTER> submit. <Ctrl+J> insert new line. <ESC> cancel. ",
|
|
357
360
|
),
|
|
358
361
|
(
|
|
359
362
|
"class:bottom-toolbar.text",
|
|
@@ -435,6 +438,7 @@ class ElicitationForm:
|
|
|
435
438
|
|
|
436
439
|
return constraints
|
|
437
440
|
|
|
441
|
+
|
|
438
442
|
def _create_field(self, field_name: str, field_def: Dict[str, Any]):
|
|
439
443
|
"""Create a field widget."""
|
|
440
444
|
|
|
@@ -510,7 +514,8 @@ class ElicitationForm:
|
|
|
510
514
|
enum_names = field_def.get("enumNames", enum_values)
|
|
511
515
|
values = [(val, name) for val, name in zip(enum_values, enum_names)]
|
|
512
516
|
|
|
513
|
-
|
|
517
|
+
default_value = field_def.get("default")
|
|
518
|
+
radio_list = RadioList(values=values, default=default_value)
|
|
514
519
|
self.field_widgets[field_name] = radio_list
|
|
515
520
|
|
|
516
521
|
return HSplit([label, Frame(radio_list, height=min(len(values) + 2, 6))])
|
|
@@ -541,23 +546,35 @@ class ElicitationForm:
|
|
|
541
546
|
else:
|
|
542
547
|
constraints = {}
|
|
543
548
|
|
|
544
|
-
|
|
549
|
+
default_value = field_def.get("default")
|
|
550
|
+
|
|
551
|
+
# Determine if field should be multiline based on max_length or default value length
|
|
545
552
|
if field_type == "string":
|
|
546
553
|
max_length = constraints.get("maxLength")
|
|
554
|
+
# Check default value length if maxLength not specified
|
|
555
|
+
if not max_length and default_value is not None:
|
|
556
|
+
max_length = len(str(default_value))
|
|
547
557
|
else:
|
|
548
558
|
max_length = None
|
|
549
|
-
|
|
559
|
+
|
|
560
|
+
# Check if default value contains newlines
|
|
561
|
+
if field_type == "string" and default_value is not None and '\n' in str(default_value):
|
|
562
|
+
multiline = True
|
|
563
|
+
self.multiline_fields.add(field_name) # Track multiline fields
|
|
564
|
+
# Set height to actual line count for fields with newlines in default
|
|
565
|
+
initial_height = str(default_value).count('\n') + 1
|
|
566
|
+
elif max_length and max_length > 100:
|
|
550
567
|
# Use multiline for longer fields
|
|
551
568
|
multiline = True
|
|
552
569
|
self.multiline_fields.add(field_name) # Track multiline fields
|
|
553
570
|
if max_length <= 300:
|
|
554
|
-
|
|
571
|
+
initial_height = 3
|
|
555
572
|
else:
|
|
556
|
-
|
|
573
|
+
initial_height = 5
|
|
557
574
|
else:
|
|
558
575
|
# Single line for shorter fields
|
|
559
576
|
multiline = False
|
|
560
|
-
|
|
577
|
+
initial_height = 1
|
|
561
578
|
|
|
562
579
|
buffer = Buffer(
|
|
563
580
|
validator=validator,
|
|
@@ -566,6 +583,8 @@ class ElicitationForm:
|
|
|
566
583
|
complete_while_typing=False, # Disable completion for cleaner experience
|
|
567
584
|
enable_history_search=False, # Disable history for cleaner experience
|
|
568
585
|
)
|
|
586
|
+
if default_value is not None:
|
|
587
|
+
buffer.text = str(default_value)
|
|
569
588
|
self.field_widgets[field_name] = buffer
|
|
570
589
|
|
|
571
590
|
# Create dynamic style function for focus highlighting and validation errors
|
|
@@ -581,31 +600,24 @@ class ElicitationForm:
|
|
|
581
600
|
else:
|
|
582
601
|
return "class:input-field"
|
|
583
602
|
|
|
603
|
+
# Create a dynamic height function based on content
|
|
604
|
+
def get_dynamic_height():
|
|
605
|
+
if not buffer.text:
|
|
606
|
+
return initial_height
|
|
607
|
+
# Calculate height based on number of newlines in buffer
|
|
608
|
+
line_count = buffer.text.count('\n') + 1
|
|
609
|
+
# Use initial height as minimum, grow up to 20 lines
|
|
610
|
+
return min(max(line_count, initial_height), 20)
|
|
611
|
+
|
|
584
612
|
text_input = Window(
|
|
585
613
|
BufferControl(buffer=buffer),
|
|
586
|
-
height=height
|
|
614
|
+
height=get_dynamic_height, # Use dynamic height function
|
|
587
615
|
style=get_field_style, # Use dynamic style function
|
|
588
616
|
wrap_lines=True if multiline else False, # Enable word wrap for multiline
|
|
589
617
|
)
|
|
590
618
|
|
|
591
619
|
return HSplit([label, Frame(text_input)])
|
|
592
620
|
|
|
593
|
-
def _is_in_multiline_field(self) -> bool:
|
|
594
|
-
"""Check if currently focused field is a multiline field."""
|
|
595
|
-
|
|
596
|
-
focused = get_app().layout.current_control
|
|
597
|
-
|
|
598
|
-
# Find which field this control belongs to
|
|
599
|
-
# Only Buffer widgets can be multiline, so only check those
|
|
600
|
-
for field_name, widget in self.field_widgets.items():
|
|
601
|
-
if (
|
|
602
|
-
isinstance(widget, Buffer)
|
|
603
|
-
and hasattr(focused, "buffer")
|
|
604
|
-
and widget == focused.buffer
|
|
605
|
-
):
|
|
606
|
-
return field_name in self.multiline_fields
|
|
607
|
-
return False
|
|
608
|
-
|
|
609
621
|
def _validate_form(self) -> tuple[bool, Optional[str]]:
|
|
610
622
|
"""Validate the entire form."""
|
|
611
623
|
|
|
@@ -101,6 +101,7 @@ class AugmentedLLM(ContextDependent, AugmentedLLMProtocol, Generic[MessageParamT
|
|
|
101
101
|
PARAM_USE_HISTORY = "use_history"
|
|
102
102
|
PARAM_MAX_ITERATIONS = "max_iterations"
|
|
103
103
|
PARAM_TEMPLATE_VARS = "template_vars"
|
|
104
|
+
PARAM_MCP_METADATA = "mcp_metadata"
|
|
104
105
|
|
|
105
106
|
# Base set of fields that should always be excluded
|
|
106
107
|
BASE_EXCLUDE_FIELDS = {PARAM_METADATA}
|
|
@@ -69,6 +69,7 @@ class AnthropicAugmentedLLM(AugmentedLLM[MessageParam, Message]):
|
|
|
69
69
|
AugmentedLLM.PARAM_MAX_ITERATIONS,
|
|
70
70
|
AugmentedLLM.PARAM_PARALLEL_TOOL_CALLS,
|
|
71
71
|
AugmentedLLM.PARAM_TEMPLATE_VARS,
|
|
72
|
+
AugmentedLLM.PARAM_MCP_METADATA,
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
def __init__(self, *args, **kwargs) -> None:
|