fast-agent-mcp 0.2.16__tar.gz → 0.2.18__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.
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/.gitignore +1 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/PKG-INFO +6 -7
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/README.md +5 -4
- {fast_agent_mcp-0.2.16/src/mcp_agent/resources → fast_agent_mcp-0.2.18}/examples/data-analysis/analysis-campaign.py +2 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/mcp/state-transfer/fastagent.config.yaml +1 -1
- fast_agent_mcp-0.2.18/examples/mcp/vision-examples/example1.py +27 -0
- fast_agent_mcp-0.2.18/examples/mcp/vision-examples/example2.py +18 -0
- fast_agent_mcp-0.2.18/examples/mcp/vision-examples/example3.py +20 -0
- fast_agent_mcp-0.2.18/examples/mcp/vision-examples/fastagent.config.yaml +47 -0
- {fast_agent_mcp-0.2.16/src/mcp_agent/resources → fast_agent_mcp-0.2.18}/examples/researcher/fastagent.config.yaml +1 -6
- {fast_agent_mcp-0.2.16/src/mcp_agent/resources → fast_agent_mcp-0.2.18}/examples/workflows/evaluator.py +1 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/fastagent.config.yaml +0 -1
- {fast_agent_mcp-0.2.16/src/mcp_agent/resources → fast_agent_mcp-0.2.18}/examples/workflows/orchestrator.py +7 -9
- {fast_agent_mcp-0.2.16/src/mcp_agent/resources → fast_agent_mcp-0.2.18}/examples/workflows/parallel.py +1 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/pyproject.toml +1 -4
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/base_agent.py +50 -6
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/orchestrator_agent.py +6 -7
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/router_agent.py +70 -136
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/app.py +1 -124
- fast_agent_mcp-0.2.18/src/mcp_agent/cli/commands/go.py +133 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/commands/setup.py +2 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/main.py +5 -3
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/config.py +16 -13
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/context.py +4 -22
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/agent_types.py +2 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/direct_decorators.py +2 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/direct_factory.py +2 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/enhanced_prompt.py +12 -7
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/fastagent.py +39 -5
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/interactive_prompt.py +6 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/request_params.py +5 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/validation.py +12 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/executor/workflow_signal.py +0 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/augmented_llm.py +183 -57
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/augmented_llm_passthrough.py +1 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/augmented_llm_playback.py +21 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/memory.py +3 -3
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/model_factory.py +3 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/provider_key_manager.py +1 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/provider_types.py +2 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/augmented_llm_anthropic.py +50 -10
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/augmented_llm_deepseek.py +1 -5
- fast_agent_mcp-0.2.18/src/mcp_agent/llm/providers/augmented_llm_google.py +30 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/augmented_llm_openai.py +96 -159
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/multipart_converter_openai.py +10 -27
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/sampling_converter_openai.py +5 -6
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/interfaces.py +6 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/mcp_aggregator.py +2 -8
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompt_message_multipart.py +25 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18/src/mcp_agent/resources}/examples/data-analysis/analysis-campaign.py +2 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/in_dev/agent_build.py +1 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/job.py +1 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +1 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/agent.py +0 -2
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/fastagent.config.yaml +2 -3
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18/src/mcp_agent/resources}/examples/researcher/fastagent.config.yaml +1 -6
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -1
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18/src/mcp_agent/resources}/examples/workflows/parallel.py +1 -1
- fast_agent_mcp-0.2.16/src/mcp_agent/executor/decorator_registry.py +0 -112
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/LICENSE +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/data-analysis/analysis.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/mcp/state-transfer/agent_one.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/mcp/state-transfer/agent_two.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/researcher/researcher-eval.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/researcher/researcher-imp.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/researcher/researcher.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/chaining.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/graded_report.md +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/human_input.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/router.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/short_story.md +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/examples/workflows/short_story.txt +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/agent.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/chain_agent.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/evaluator_optimizer.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/orchestrator_models.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/orchestrator_prompts.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/parallel_agent.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/__main__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/commands/check_config.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/commands/quickstart.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/cli/terminal.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/console.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/context_dependent.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/agent_app.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/error_handling.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/exceptions.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/mcp_content.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/core/prompt.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/event_progress.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/executor/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/executor/executor.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/executor/task_registry.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/human_input/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/human_input/handler.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/human_input/types.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/prompt_utils.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/anthropic_utils.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/augmented_llm_generic.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/augmented_llm_openrouter.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/multipart_converter_anthropic.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/openai_multipart.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/openai_utils.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/providers/sampling_converter_anthropic.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/sampling_converter.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/llm/sampling_format_converter.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/events.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/json_serializer.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/listeners.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/logger.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/rich_progress.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/tracing.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/logging/transport.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/gen_client.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/helpers/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/helpers/content_helpers.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/logger_textio.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/mcp_agent_client_session.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/mcp_connection_manager.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/mime_utils.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompt_render.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompt_serialization.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/__main__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/prompt_constants.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/prompt_helpers.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/prompt_load.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/prompt_server.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/prompts/prompt_template.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/resource_utils.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp/sampling.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp_server/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp_server/agent_server.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/mcp_server_registry.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/progress_display.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/data-analysis/analysis.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/in_dev/css-LICENSE.txt +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/in_dev/slides.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/agent.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/history_transfer.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/prompt_category.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/prompt_sizing.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/simple.txt +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/sizer.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/internal/social.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/mcp/state-transfer/agent_one.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/mcp/state-transfer/agent_two.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/__init__.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/delimited_prompt.txt +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/image_server.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/prompt1.txt +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/prompting/work_with_image.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/researcher/researcher-eval.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/researcher/researcher-imp.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/researcher/researcher.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/workflows/chaining.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18/src/mcp_agent/resources}/examples/workflows/evaluator.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/workflows/human_input.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18/src/mcp_agent/resources}/examples/workflows/orchestrator.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/workflows/router.py +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/resources/examples/workflows/short_story.txt +0 -0
- {fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/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.
|
3
|
+
Version: 0.2.18
|
4
4
|
Summary: Define, Prompt and Test MCP enabled Agents and Workflows
|
5
5
|
Author-email: Shaun Smith <fastagent@llmindset.co.uk>, Sarmad Qadri <sarmad@lastmileai.dev>
|
6
6
|
License: Apache License
|
@@ -237,8 +237,6 @@ Requires-Dist: ruff>=0.8.4; extra == 'dev'
|
|
237
237
|
Requires-Dist: tomli>=2.2.1; extra == 'dev'
|
238
238
|
Provides-Extra: openai
|
239
239
|
Requires-Dist: openai>=1.58.1; extra == 'openai'
|
240
|
-
Provides-Extra: temporal
|
241
|
-
Requires-Dist: temporalio>=1.8.0; extra == 'temporal'
|
242
240
|
Description-Content-Type: text/markdown
|
243
241
|
|
244
242
|
<p align="center">
|
@@ -255,13 +253,14 @@ Description-Content-Type: text/markdown
|
|
255
253
|
> [!TIP]
|
256
254
|
> Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not. llms.txt link is here: https://fast-agent.ai/llms.txt
|
257
255
|
|
258
|
-
**`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling. Both Anthropic (Haiku, Sonnet, Opus) and OpenAI models (gpt-4o family, o1/o3 family) are supported.
|
256
|
+
**`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling. Both Anthropic (Haiku, Sonnet, Opus) and OpenAI models (gpt-4o/gpt-4.1 family, o1/o3 family) are supported.
|
259
257
|
|
260
258
|
The simple declarative syntax lets you concentrate on composing your Prompts and MCP Servers to [build effective agents](https://www.anthropic.com/research/building-effective-agents).
|
261
259
|
|
262
260
|
`fast-agent` is multi-modal, supporting Images and PDFs for both Anthropic and OpenAI endpoints via Prompts, Resources and MCP Tool Call results. The inclusion of passthrough and playback LLMs enable rapid development and test of Python glue-code for your applications.
|
263
261
|
|
264
|
-
> [!TIP]
|
262
|
+
> [!TIP]
|
263
|
+
> `fast-agent` is now MCP Native! Coming Soon - Full Documentation Site and Further MCP Examples.
|
265
264
|
|
266
265
|
### Agent Application Development
|
267
266
|
|
@@ -313,7 +312,7 @@ Or start an interactive chat with the Agent:
|
|
313
312
|
|
314
313
|
```python
|
315
314
|
async with fast.run() as agent:
|
316
|
-
await agent()
|
315
|
+
await agent.interactive()
|
317
316
|
```
|
318
317
|
|
319
318
|
Here is the complete `sizer.py` Agent application, with boilerplate code:
|
@@ -330,7 +329,7 @@ fast = FastAgent("Agent Example")
|
|
330
329
|
)
|
331
330
|
async def main():
|
332
331
|
async with fast.run() as agent:
|
333
|
-
await agent()
|
332
|
+
await agent.interactive()
|
334
333
|
|
335
334
|
if __name__ == "__main__":
|
336
335
|
asyncio.run(main())
|
@@ -12,13 +12,14 @@
|
|
12
12
|
> [!TIP]
|
13
13
|
> Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not. llms.txt link is here: https://fast-agent.ai/llms.txt
|
14
14
|
|
15
|
-
**`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling. Both Anthropic (Haiku, Sonnet, Opus) and OpenAI models (gpt-4o family, o1/o3 family) are supported.
|
15
|
+
**`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling. Both Anthropic (Haiku, Sonnet, Opus) and OpenAI models (gpt-4o/gpt-4.1 family, o1/o3 family) are supported.
|
16
16
|
|
17
17
|
The simple declarative syntax lets you concentrate on composing your Prompts and MCP Servers to [build effective agents](https://www.anthropic.com/research/building-effective-agents).
|
18
18
|
|
19
19
|
`fast-agent` is multi-modal, supporting Images and PDFs for both Anthropic and OpenAI endpoints via Prompts, Resources and MCP Tool Call results. The inclusion of passthrough and playback LLMs enable rapid development and test of Python glue-code for your applications.
|
20
20
|
|
21
|
-
> [!TIP]
|
21
|
+
> [!TIP]
|
22
|
+
> `fast-agent` is now MCP Native! Coming Soon - Full Documentation Site and Further MCP Examples.
|
22
23
|
|
23
24
|
### Agent Application Development
|
24
25
|
|
@@ -70,7 +71,7 @@ Or start an interactive chat with the Agent:
|
|
70
71
|
|
71
72
|
```python
|
72
73
|
async with fast.run() as agent:
|
73
|
-
await agent()
|
74
|
+
await agent.interactive()
|
74
75
|
```
|
75
76
|
|
76
77
|
Here is the complete `sizer.py` Agent application, with boilerplate code:
|
@@ -87,7 +88,7 @@ fast = FastAgent("Agent Example")
|
|
87
88
|
)
|
88
89
|
async def main():
|
89
90
|
async with fast.run() as agent:
|
90
|
-
await agent()
|
91
|
+
await agent.interactive()
|
91
92
|
|
92
93
|
if __name__ == "__main__":
|
93
94
|
asyncio.run(main())
|
@@ -33,7 +33,7 @@ Extract key insights that would be compelling for a social media campaign.
|
|
33
33
|
- Extracted compelling insights suitable for social media promotion
|
34
34
|
""",
|
35
35
|
request_params=RequestParams(maxTokens=8192),
|
36
|
-
model="gpt-
|
36
|
+
model="gpt-4.1",
|
37
37
|
)
|
38
38
|
@fast.evaluator_optimizer(
|
39
39
|
"analysis_tool",
|
@@ -55,7 +55,7 @@ Extract key insights that would be compelling for a social media campaign.
|
|
55
55
|
""",
|
56
56
|
servers=["fetch", "brave"], # Using the fetch MCP server for Brave search
|
57
57
|
request_params=RequestParams(temperature=0.3),
|
58
|
-
model="gpt-
|
58
|
+
model="gpt-4.1",
|
59
59
|
)
|
60
60
|
# Social media content generator
|
61
61
|
@fast.agent(
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import asyncio
|
2
|
+
from pathlib import Path
|
3
|
+
|
4
|
+
from mcp_agent.core.fastagent import FastAgent
|
5
|
+
from mcp_agent.core.prompt import Prompt
|
6
|
+
|
7
|
+
# Create the application
|
8
|
+
fast = FastAgent("fast-agent example")
|
9
|
+
|
10
|
+
|
11
|
+
# Define the agent
|
12
|
+
@fast.agent(instruction="You are a helpful AI Agent", servers=["filesystem"])
|
13
|
+
async def main():
|
14
|
+
# use the --model command line switch or agent arguments to change model
|
15
|
+
async with fast.run() as agent:
|
16
|
+
await agent.default.generate(
|
17
|
+
[
|
18
|
+
Prompt.user(
|
19
|
+
Path("cat.png"), "Write a report on the content of the image to 'report.md'"
|
20
|
+
)
|
21
|
+
]
|
22
|
+
)
|
23
|
+
await agent.interactive()
|
24
|
+
|
25
|
+
|
26
|
+
if __name__ == "__main__":
|
27
|
+
asyncio.run(main())
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import asyncio
|
2
|
+
|
3
|
+
from mcp_agent.core.fastagent import FastAgent
|
4
|
+
|
5
|
+
# Create the application
|
6
|
+
fast = FastAgent("fast-agent example")
|
7
|
+
|
8
|
+
|
9
|
+
# Define the agent
|
10
|
+
@fast.agent(instruction="You are a helpful AI Agent", servers=["filesystem"])
|
11
|
+
async def main():
|
12
|
+
# use the --model command line switch or agent arguments to change model
|
13
|
+
async with fast.run() as agent:
|
14
|
+
await agent.interactive()
|
15
|
+
|
16
|
+
|
17
|
+
if __name__ == "__main__":
|
18
|
+
asyncio.run(main())
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import asyncio
|
2
|
+
|
3
|
+
from mcp_agent.core.fastagent import FastAgent
|
4
|
+
|
5
|
+
# Create the application
|
6
|
+
fast = FastAgent("fast-agent example")
|
7
|
+
|
8
|
+
|
9
|
+
# Define the agent
|
10
|
+
@fast.agent(instruction="You are a helpful AI Agent", servers=["webcam", "hfspace"])
|
11
|
+
async def main():
|
12
|
+
async with fast.run() as agent:
|
13
|
+
await agent.interactive(
|
14
|
+
default_prompt="take an image with the webcam, describe it to flux to "
|
15
|
+
"reproduce it and then judge the quality of the result"
|
16
|
+
)
|
17
|
+
|
18
|
+
|
19
|
+
if __name__ == "__main__":
|
20
|
+
asyncio.run(main())
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# FastAgent Configuration File
|
2
|
+
|
3
|
+
# Default Model Configuration:
|
4
|
+
#
|
5
|
+
# Takes format:
|
6
|
+
# <provider>.<model_string>.<reasoning_effort?> (e.g. anthropic.claude-3-5-sonnet-20241022 or openai.o3-mini.low)
|
7
|
+
# Accepts aliases for Anthropic Models: haiku, haiku3, sonnet, sonnet35, opus, opus3
|
8
|
+
# and OpenAI Models: gpt-4.1, gpt-4.1-mini, o1, o1-mini, o3-mini
|
9
|
+
#
|
10
|
+
# If not specified, defaults to "haiku".
|
11
|
+
# Can be overriden with a command line switch --model=<model>, or within the Agent constructor.
|
12
|
+
|
13
|
+
default_model: haiku
|
14
|
+
|
15
|
+
# Logging and Console Configuration:
|
16
|
+
logger:
|
17
|
+
# level: "debug" | "info" | "warning" | "error"
|
18
|
+
# type: "none" | "console" | "file" | "http"
|
19
|
+
# path: "/path/to/logfile.jsonl"
|
20
|
+
|
21
|
+
|
22
|
+
# Switch the progress display on or off
|
23
|
+
progress_display: true
|
24
|
+
|
25
|
+
# Show chat User/Assistant messages on the console
|
26
|
+
show_chat: true
|
27
|
+
# Show tool calls on the console
|
28
|
+
show_tools: true
|
29
|
+
# Truncate long tool responses on the console
|
30
|
+
truncate_tools: true
|
31
|
+
|
32
|
+
# MCP Servers
|
33
|
+
mcp:
|
34
|
+
servers:
|
35
|
+
fetch:
|
36
|
+
command: "uvx"
|
37
|
+
args: ["mcp-server-fetch"]
|
38
|
+
filesystem:
|
39
|
+
command: "npx"
|
40
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "."]
|
41
|
+
webcam:
|
42
|
+
command: "npx"
|
43
|
+
args: ["-y","@llmindset/mcp-webcam"]
|
44
|
+
hfspace:
|
45
|
+
command: "npx"
|
46
|
+
args: ["-y","@llmindset/mcp-hfspace"]
|
47
|
+
|
@@ -4,7 +4,6 @@
|
|
4
4
|
#
|
5
5
|
#
|
6
6
|
|
7
|
-
execution_engine: asyncio
|
8
7
|
logger:
|
9
8
|
type: console
|
10
9
|
level: error
|
@@ -53,14 +52,10 @@ mcp:
|
|
53
52
|
args: ["mcp-server-fetch"]
|
54
53
|
sequential:
|
55
54
|
command: "npx"
|
56
|
-
args: ["-y","@modelcontextprotocol/server-sequential-thinking"]
|
57
|
-
|
55
|
+
args: ["-y", "@modelcontextprotocol/server-sequential-thinking"]
|
58
56
|
# webmcp:
|
59
57
|
# command: "node"
|
60
58
|
# args: ["/home/ssmith/.webmcp/server.cjs"]
|
61
59
|
# env:
|
62
60
|
# WEBMCP_SERVER_TOKEN: 96e22896d8143fc1d61fec09208fc5ed
|
63
61
|
|
64
|
-
|
65
|
-
|
66
|
-
|
@@ -40,7 +40,7 @@ fast = FastAgent("Evaluator-Optimizer")
|
|
40
40
|
Summarize your evaluation as a structured response with:
|
41
41
|
- Overall quality rating.
|
42
42
|
- Specific feedback and areas for improvement.""",
|
43
|
-
model="gpt-
|
43
|
+
model="gpt-4.1",
|
44
44
|
)
|
45
45
|
# Define the evaluator-optimizer workflow
|
46
46
|
@fast.evaluator_optimizer(
|
@@ -13,7 +13,7 @@ fast = FastAgent("Orchestrator-Workers")
|
|
13
13
|
@fast.agent(
|
14
14
|
"author",
|
15
15
|
instruction="""You are to role play a poorly skilled writer,
|
16
|
-
who makes frequent grammar,
|
16
|
+
who makes frequent grammar, punctuation and spelling errors. You enjoy
|
17
17
|
writing short stories, but the narrative doesn't always make sense""",
|
18
18
|
servers=["filesystem"],
|
19
19
|
)
|
@@ -25,7 +25,7 @@ fast = FastAgent("Orchestrator-Workers")
|
|
25
25
|
the closest match to a user's request, make the appropriate tool calls,
|
26
26
|
and return the URI and CONTENTS of the closest match.""",
|
27
27
|
servers=["fetch", "filesystem"],
|
28
|
-
model="gpt-
|
28
|
+
model="gpt-4.1",
|
29
29
|
)
|
30
30
|
@fast.agent(
|
31
31
|
name="writer",
|
@@ -40,19 +40,17 @@ fast = FastAgent("Orchestrator-Workers")
|
|
40
40
|
Identify any awkward phrasing or structural issues that could improve clarity.
|
41
41
|
Provide detailed feedback on corrections.""",
|
42
42
|
servers=["fetch"],
|
43
|
-
model="gpt-
|
43
|
+
model="gpt-4.1",
|
44
44
|
)
|
45
45
|
# Define the orchestrator to coordinate the other agents
|
46
46
|
@fast.orchestrator(
|
47
|
-
name="orchestrate",
|
48
|
-
agents=["finder", "writer", "proofreader"],
|
49
|
-
plan_type="full",
|
47
|
+
name="orchestrate", agents=["finder", "writer", "proofreader"], plan_type="full", model="sonnet"
|
50
48
|
)
|
51
49
|
async def main() -> None:
|
52
50
|
async with fast.run() as agent:
|
53
|
-
await agent.author(
|
54
|
-
|
55
|
-
)
|
51
|
+
# await agent.author(
|
52
|
+
# "write a 250 word short story about kittens discovering a castle, and save it to short_story.md"
|
53
|
+
# )
|
56
54
|
|
57
55
|
# The orchestrator can be used just like any other agent
|
58
56
|
task = """Load the student's short story from short_story.md,
|
@@ -25,7 +25,7 @@ fast = FastAgent(
|
|
25
25
|
instruction="""Verify the factual consistency within the story. Identify any contradictions,
|
26
26
|
logical inconsistencies, or inaccuracies in the plot, character actions, or setting.
|
27
27
|
Highlight potential issues with reasoning or coherence.""",
|
28
|
-
model="gpt-
|
28
|
+
model="gpt-4.1",
|
29
29
|
)
|
30
30
|
@fast.agent(
|
31
31
|
name="style_enforcer",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "fast-agent-mcp"
|
3
|
-
version = "0.2.
|
3
|
+
version = "0.2.18"
|
4
4
|
description = "Define, Prompt and Test MCP enabled Agents and Workflows"
|
5
5
|
readme = "README.md"
|
6
6
|
license = { file = "LICENSE" }
|
@@ -34,9 +34,6 @@ dependencies = [
|
|
34
34
|
]
|
35
35
|
|
36
36
|
[project.optional-dependencies]
|
37
|
-
temporal = [
|
38
|
-
"temporalio>=1.8.0",
|
39
|
-
]
|
40
37
|
openai = [
|
41
38
|
"openai>=1.58.1",
|
42
39
|
]
|
@@ -20,6 +20,7 @@ from typing import (
|
|
20
20
|
Union,
|
21
21
|
)
|
22
22
|
|
23
|
+
from a2a_types.types import AgentCapabilities, AgentCard, AgentSkill
|
23
24
|
from mcp.types import (
|
24
25
|
CallToolResult,
|
25
26
|
EmbeddedResource,
|
@@ -58,6 +59,11 @@ if TYPE_CHECKING:
|
|
58
59
|
from mcp_agent.context import Context
|
59
60
|
|
60
61
|
|
62
|
+
DEFAULT_CAPABILITIES = AgentCapabilities(
|
63
|
+
streaming=False, pushNotifications=False, stateTransitionHistory=False
|
64
|
+
)
|
65
|
+
|
66
|
+
|
61
67
|
class BaseAgent(MCPAggregator, AgentProtocol):
|
62
68
|
"""
|
63
69
|
A base Agent class that implements the AgentProtocol interface.
|
@@ -586,7 +592,7 @@ class BaseAgent(MCPAggregator, AgentProtocol):
|
|
586
592
|
|
587
593
|
async def structured(
|
588
594
|
self,
|
589
|
-
|
595
|
+
multipart_messages: List[PromptMessageMultipart],
|
590
596
|
model: Type[ModelT],
|
591
597
|
request_params: RequestParams | None = None,
|
592
598
|
) -> Tuple[ModelT | None, PromptMessageMultipart]:
|
@@ -603,7 +609,7 @@ class BaseAgent(MCPAggregator, AgentProtocol):
|
|
603
609
|
An instance of the specified model, or None if coercion fails
|
604
610
|
"""
|
605
611
|
assert self._llm
|
606
|
-
return await self._llm.structured(
|
612
|
+
return await self._llm.structured(multipart_messages, model, request_params)
|
607
613
|
|
608
614
|
async def apply_prompt_messages(
|
609
615
|
self, prompts: List[PromptMessageMultipart], request_params: RequestParams | None = None
|
@@ -626,13 +632,51 @@ class BaseAgent(MCPAggregator, AgentProtocol):
|
|
626
632
|
def agent_type(self) -> AgentType:
|
627
633
|
"""
|
628
634
|
Return the type of this agent.
|
635
|
+
"""
|
636
|
+
return AgentType.BASIC
|
637
|
+
|
638
|
+
async def agent_card(self) -> AgentCard:
|
639
|
+
"""
|
640
|
+
Return an A2A card describing this Agent
|
641
|
+
"""
|
629
642
|
|
630
|
-
|
643
|
+
skills: List[AgentSkill] = []
|
644
|
+
tools: ListToolsResult = await self.list_tools()
|
645
|
+
for tool in tools.tools:
|
646
|
+
skills.append(await self.convert(tool))
|
631
647
|
|
632
|
-
|
633
|
-
|
648
|
+
return AgentCard(
|
649
|
+
name=self.name,
|
650
|
+
description=self.instruction,
|
651
|
+
url=f"fast-agent://agents/{self.name}/",
|
652
|
+
version="0.1",
|
653
|
+
capabilities=DEFAULT_CAPABILITIES,
|
654
|
+
defaultInputModes=["text/plain"],
|
655
|
+
defaultOutputModes=["text/plain"],
|
656
|
+
provider=None,
|
657
|
+
documentationUrl=None,
|
658
|
+
authentication=None,
|
659
|
+
skills=skills,
|
660
|
+
)
|
661
|
+
|
662
|
+
async def convert(self, tool: Tool) -> AgentSkill:
|
634
663
|
"""
|
635
|
-
|
664
|
+
Convert a Tool to an AgentSkill.
|
665
|
+
"""
|
666
|
+
|
667
|
+
_, tool_without_namespace = await self._parse_resource_name(tool.name, "tool")
|
668
|
+
return AgentSkill(
|
669
|
+
id=tool.name,
|
670
|
+
name=tool_without_namespace,
|
671
|
+
description=tool.description,
|
672
|
+
tags=["tool"],
|
673
|
+
examples=None,
|
674
|
+
inputModes=None, # ["text/plain"],
|
675
|
+
# cover TextContent | ImageContent ->
|
676
|
+
# https://github.com/modelcontextprotocol/modelcontextprotocol/pull/223
|
677
|
+
# https://github.com/modelcontextprotocol/modelcontextprotocol/pull/93
|
678
|
+
outputModes=None, # ,["text/plain", "image/*"],
|
679
|
+
)
|
636
680
|
|
637
681
|
@property
|
638
682
|
def message_history(self) -> List[PromptMessageMultipart]:
|
{fast_agent_mcp-0.2.16 → fast_agent_mcp-0.2.18}/src/mcp_agent/agents/workflow/orchestrator_agent.py
RENAMED
@@ -57,6 +57,7 @@ class OrchestratorAgent(BaseAgent):
|
|
57
57
|
config: AgentConfig,
|
58
58
|
agents: List[Agent],
|
59
59
|
plan_type: Literal["full", "iterative"] = "full",
|
60
|
+
plan_iterations: int = 5,
|
60
61
|
context: Optional[Any] = None,
|
61
62
|
**kwargs,
|
62
63
|
) -> None:
|
@@ -83,7 +84,7 @@ class OrchestratorAgent(BaseAgent):
|
|
83
84
|
agent_name = agent.name
|
84
85
|
self.logger.info(f"Adding agent '{agent_name}' to orchestrator")
|
85
86
|
self.agents[agent_name] = agent
|
86
|
-
|
87
|
+
self.plan_iterations = plan_iterations
|
87
88
|
# For tracking state during execution
|
88
89
|
self.plan_result: Optional[PlanResult] = None
|
89
90
|
|
@@ -186,8 +187,8 @@ class OrchestratorAgent(BaseAgent):
|
|
186
187
|
"""
|
187
188
|
iterations = 0
|
188
189
|
total_steps_executed = 0
|
189
|
-
max_iterations =
|
190
|
-
max_steps = getattr(request_params, "max_steps", max_iterations *
|
190
|
+
max_iterations = self.plan_iterations
|
191
|
+
max_steps = getattr(request_params, "max_steps", max_iterations * 3)
|
191
192
|
|
192
193
|
# Initialize plan result
|
193
194
|
plan_result = PlanResult(objective=objective, step_results=[])
|
@@ -414,7 +415,7 @@ class OrchestratorAgent(BaseAgent):
|
|
414
415
|
plan_status = "Plan Status: Not Started"
|
415
416
|
|
416
417
|
# Calculate iteration information
|
417
|
-
max_iterations =
|
418
|
+
max_iterations = self.plan_iterations
|
418
419
|
current_iteration = len(plan_result.step_results)
|
419
420
|
current_iteration = min(current_iteration, max_iterations - 1)
|
420
421
|
iterations_remaining = max(0, max_iterations - current_iteration - 1)
|
@@ -536,9 +537,7 @@ class OrchestratorAgent(BaseAgent):
|
|
536
537
|
return ""
|
537
538
|
|
538
539
|
# Get agent instruction or default description
|
539
|
-
instruction =
|
540
|
-
agent.instruction if hasattr(agent, "instruction") else f"Agent '{agent_name}'"
|
541
|
-
)
|
540
|
+
instruction = agent.instruction if agent.instruction else f"Agent '{agent_name}'"
|
542
541
|
|
543
542
|
# Format with XML tags
|
544
543
|
return f'<fastagent:agent name="{agent_name}">{instruction}</fastagent:agent>'
|