fix(tools/delegate): propagate resolved ACP runtime settings to child agents
This commit is contained in:
parent
fc8e4ebf8e
commit
735996d2ad
@ -903,6 +903,45 @@ class TestDelegationProviderIntegration(unittest.TestCase):
|
||||
self.assertEqual(call.kwargs.get("override_api_key"), "sk-or-batch")
|
||||
self.assertEqual(call.kwargs.get("override_api_mode"), "chat_completions")
|
||||
|
||||
@patch("tools.delegate_tool._load_config")
|
||||
@patch("tools.delegate_tool._resolve_delegation_credentials")
|
||||
def test_delegation_acp_runtime_reaches_child_agent(self, mock_creds, mock_cfg):
|
||||
"""Resolved ACP runtime command/args must be forwarded to child agents."""
|
||||
mock_cfg.return_value = {
|
||||
"max_iterations": 45,
|
||||
"model": "copilot-model",
|
||||
"provider": "copilot-acp",
|
||||
}
|
||||
mock_creds.return_value = {
|
||||
"model": "copilot-model",
|
||||
"provider": "copilot-acp",
|
||||
"base_url": "acp://copilot",
|
||||
"api_key": "copilot-acp",
|
||||
"api_mode": "chat_completions",
|
||||
"command": "custom-copilot",
|
||||
"args": ["--stdio-custom"],
|
||||
}
|
||||
parent = _make_mock_parent(depth=0)
|
||||
|
||||
with patch("tools.delegate_tool._build_child_agent") as mock_build, \
|
||||
patch("tools.delegate_tool._run_single_child") as mock_run:
|
||||
mock_child = MagicMock()
|
||||
mock_build.return_value = mock_child
|
||||
mock_run.return_value = {
|
||||
"task_index": 0, "status": "completed",
|
||||
"summary": "Done", "api_calls": 1, "duration_seconds": 1.0
|
||||
}
|
||||
|
||||
delegate_task(goal="ACP delegation test", parent_agent=parent)
|
||||
|
||||
_, kwargs = mock_build.call_args
|
||||
self.assertEqual(kwargs.get("override_provider"), "copilot-acp")
|
||||
self.assertEqual(kwargs.get("override_base_url"), "acp://copilot")
|
||||
self.assertEqual(kwargs.get("override_api_key"), "copilot-acp")
|
||||
self.assertEqual(kwargs.get("override_api_mode"), "chat_completions")
|
||||
self.assertEqual(kwargs.get("override_acp_command"), "custom-copilot")
|
||||
self.assertEqual(kwargs.get("override_acp_args"), ["--stdio-custom"])
|
||||
|
||||
@patch("tools.delegate_tool._load_config")
|
||||
@patch("tools.delegate_tool._resolve_delegation_credentials")
|
||||
def test_model_only_no_provider_inherits_parent_credentials(self, mock_creds, mock_cfg):
|
||||
|
||||
@ -768,6 +768,7 @@ def delegate_task(
|
||||
children = []
|
||||
try:
|
||||
for i, t in enumerate(task_list):
|
||||
task_acp_args = t.get("acp_args") if "acp_args" in t else None
|
||||
child = _build_child_agent(
|
||||
task_index=i, goal=t["goal"], context=t.get("context"),
|
||||
toolsets=t.get("toolsets") or toolsets, model=creds["model"],
|
||||
@ -775,8 +776,10 @@ def delegate_task(
|
||||
override_provider=creds["provider"], override_base_url=creds["base_url"],
|
||||
override_api_key=creds["api_key"],
|
||||
override_api_mode=creds["api_mode"],
|
||||
override_acp_command=t.get("acp_command") or acp_command,
|
||||
override_acp_args=t.get("acp_args") or acp_args,
|
||||
override_acp_command=t.get("acp_command") or acp_command or creds.get("command"),
|
||||
override_acp_args=task_acp_args if task_acp_args is not None else (
|
||||
acp_args if acp_args is not None else creds.get("args")
|
||||
),
|
||||
)
|
||||
# Override with correct parent tool names (before child construction mutated global)
|
||||
child._delegate_saved_tool_names = _parent_tool_names
|
||||
|
||||
Loading…
Reference in New Issue
Block a user