Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions lib/crewai/tests/agents/test_agent_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

from crewai.agents.tools_handler import ToolsHandler as _ToolsHandler
from crewai.agents.step_executor import StepExecutor
from crewai.core.providers.human_input import SyncHumanInputProvider


def _build_executor(**kwargs: Any) -> AgentExecutor:
Expand Down Expand Up @@ -224,6 +225,36 @@ def test_executor_initialization(self, mock_dependencies):
assert executor.max_iter == 10
assert executor.use_stop_words is True

def test_ask_for_human_input_delegates_to_state(self, mock_dependencies):
"""Test ExecutorContext human input flag compatibility."""
executor = _build_executor(**mock_dependencies)

assert executor.ask_for_human_input is False

executor.state.ask_for_human_input = True
assert executor.ask_for_human_input is True

executor.ask_for_human_input = False
assert executor.state.ask_for_human_input is False

def test_human_input_provider_can_clear_executor_state_flag(
self, mock_dependencies
):
"""Test sync human feedback can read and clear the executor flag."""
executor = _build_executor(**mock_dependencies)
executor.state.ask_for_human_input = True
formatted_answer = AgentFinish(
thought="final thoughts", output="Final answer", text="complete"
)

with patch.object(SyncHumanInputProvider, "_prompt_input", return_value=""):
result = SyncHumanInputProvider().handle_feedback(
formatted_answer, executor
)

assert result is formatted_answer
assert executor.state.ask_for_human_input is False

def test_initialize_reasoning(self, mock_dependencies):
"""Test flow entry point."""
with patch.object(
Expand Down