refactor(tool_executor): split execute_tool_calls_concurrent into _ConcurrentBatch + shared result helpers
Behavior-neutral extraction of the 686-LOC concurrent executor and the 429-LOC sequential executor into focused helpers: - _ConcurrentBatch (run_worker / submit_all / await_completion / run) and _StartOrderGate replace the nested closures + nonlocal counters; _ToolOutcome replaces the 7-tuple result slots; _ParsedCall/_parse_tool_call replaces the 6-tuple parsed-call rows in both executors (-> 2 sites). - _append_skipped_tool_results unifies the four cancelled/skipped-result loops (concurrent pre-flight, sequential pre-tool interrupt, sequential KeyboardInterrupt, sequential post-tool interrupt) -> 4 sites; absorbs _append_cancelled_tool_results. - _observe_tool_result / _commit_tool_result / _finalize_tool_batch / _print_tool_completed / _tool_progress_enabled unify the post-execution guardrail-observe -> append+flush -> tool.completed -> budget -> /steer tail shared by the concurrent, sequential and segmented paths (-> 2-3 sites each). - _unfinished_tool_result, _blocked_tool_result, _abandoned_sequential_result collapse the duplicated synthesize-result + terminal post_tool_call blocks. - _registered_tool_worker / _interrupt_worker_tids unify worker tid tracking and interrupt fan-out between the two middleware runners (-> 2 / 3 sites). - _run_with_activity_heartbeat extracts the heartbeat thread wrapper. - _resolve_sequential_dispatch + _SequentialDispatch turn the 5-branch inline/delegate/context-engine/memory/registry if/elif into a resolver with per-branch spinner/error/KeyboardInterrupt policy, preserving branch order. - _cancelled_tool_result and _managed_values inlined (single caller each). Public signatures (execute_tool_calls_concurrent/sequential/segmented, both middleware runners, every symbol imported by run_agent.py/agent/tests) are unchanged; middleware/hook/persistence/progress-callback order is identical.
This commit is contained in: