diff --git a/agent-team/agent_team/nodes/dispatch_invoker.py b/agent-team/agent_team/nodes/dispatch_invoker.py index cf3348a..c0f259f 100644 --- a/agent-team/agent_team/nodes/dispatch_invoker.py +++ b/agent-team/agent_team/nodes/dispatch_invoker.py @@ -79,14 +79,10 @@ def make_dispatch_node( } if not thread_id or not diff_text.strip(): - _LOG.warning( - "dispatch_node: missing thread_id or candidate_diff; parking" - ) + _LOG.warning("dispatch_node: missing thread_id or candidate_diff; parking") return _parked if not declared_scope.strip(): - _LOG.warning( - "dispatch_node: empty declared_scope from plan; parking" - ) + _LOG.warning("dispatch_node: empty declared_scope from plan; parking") return _parked try: diff --git a/agent-team/tests/test_ws3_dispatch_invoker.py b/agent-team/tests/test_ws3_dispatch_invoker.py index 2e607b1..164051e 100644 --- a/agent-team/tests/test_ws3_dispatch_invoker.py +++ b/agent-team/tests/test_ws3_dispatch_invoker.py @@ -47,9 +47,7 @@ def _make_fake_pusher() -> tuple[list[dict[str, Any]], Any]: def _make_fake_workflow_dispatcher() -> tuple[list[dict[str, Any]], Any]: calls: list[dict[str, Any]] = [] - def _dispatcher( - *, owner: str, repo: str, inputs: dict[str, str], ref: str - ) -> None: + def _dispatcher(*, owner: str, repo: str, inputs: dict[str, str], ref: str) -> None: calls.append(dict(owner=owner, repo=repo, ref=ref, inputs=inputs)) return calls, _dispatcher @@ -81,7 +79,9 @@ _VALID_STATE: dict[str, Any] = { def test_dispatch_node_happy_path_returns_partial_state() -> None: """On success the node returns {} (partial state update — DONE comes from graph).""" pusher, dispatcher = _fake_seams() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) result = node(_VALID_STATE) # Remote implementation returns {} on success (graph topology marks DONE). @@ -119,7 +119,9 @@ def test_dispatch_node_passes_task_id_to_head_branch() -> None: def test_dispatch_node_passes_scope_to_workflow_dispatcher() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) node(_VALID_STATE) assert disp_calls, "workflow dispatcher should have been called" @@ -131,7 +133,9 @@ def test_dispatch_node_flattens_scope_list_to_string() -> None: """Multi-entry scope list is newline-joined into declared_scope.""" _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, plan={"scope": ["agent_team/", "tests/"]}) node(state) @@ -149,7 +153,9 @@ def test_dispatch_node_flattens_scope_list_to_string() -> None: def test_dispatch_node_parks_on_missing_thread_id() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, thread_id="") result = node(state) @@ -162,7 +168,9 @@ def test_dispatch_node_parks_on_missing_thread_id() -> None: def test_dispatch_node_parks_on_missing_diff() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, candidate_diff="") result = node(state) @@ -174,7 +182,9 @@ def test_dispatch_node_parks_on_missing_diff() -> None: def test_dispatch_node_parks_on_whitespace_only_diff() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, candidate_diff=" \n ") result = node(state) @@ -186,7 +196,9 @@ def test_dispatch_node_parks_on_whitespace_only_diff() -> None: def test_dispatch_node_parks_on_empty_scope() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, plan={"scope": []}) result = node(state) @@ -198,7 +210,9 @@ def test_dispatch_node_parks_on_empty_scope() -> None: def test_dispatch_node_parks_on_none_plan() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, plan=None) result = node(state) @@ -210,7 +224,9 @@ def test_dispatch_node_parks_on_none_plan() -> None: def test_dispatch_node_parks_on_non_dict_plan() -> None: _, pusher = _make_fake_pusher() disp_calls, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) state = dict(_VALID_STATE, plan="not-a-dict") result = node(state) @@ -227,7 +243,9 @@ def test_dispatch_node_parks_on_dispatcher_error() -> None: raise DispatcherError("invalid owner/repo 'x'/'y'") _, dispatcher = _make_fake_workflow_dispatcher() - node = make_dispatch_node(owner="org", repo="repo", pusher=_bad_pusher, dispatcher=dispatcher) + node = make_dispatch_node( + owner="org", repo="repo", pusher=_bad_pusher, dispatcher=dispatcher + ) result = node(_VALID_STATE) assert result.get("status") == TaskStatus.PARKED.value @@ -403,7 +421,9 @@ def test_coordinator_dispatch_node_wiring_without_build_verify_raises( pusher, dispatcher = _fake_seams() def _factory() -> Any: - return make_dispatch_node(owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher) + return make_dispatch_node( + owner="org", repo="repo", pusher=pusher, dispatcher=dispatcher + ) def _stub_clarify_node() -> Any: return MagicMock()