c47f20d9a2
* fix: DevUI list[Message] entry for declarative ToolAgent (#6533) When a declarative ToolAgent is created with default settings the entry JoinExecutor declares `input_types = [dict | str | list[Message] | ActionTrigger | ...]`. DevUI called `select_primary_input_type` which returned bare `Message` instead of `list[Message]`, then passed a single Message to the executor that expects a list — causing a "cannot handle message of type Message" runtime error. Changes: - Add `_is_list_message_type` helper (GenericAlias cannot be used with isinstance; get_origin/get_args required). - Add `_find_chat_message_type` that recursively searches union members and returns `list[Message]` in preference to bare `Message`. - `select_primary_input_type`: first-pass uses `_find_chat_message_type` so the declarative entry type is correctly returned as `list[Message]`. - `generate_input_schema`: returns `{"type":"string"}` for `list[Message]` so DevUI renders a plain text box. - Add `_looks_like_message_dict` heuristic (role present, type=="message", or exactly {"input":...}) to distinguish serialised Message payloads from structured workflow inputs without false positives. - `parse_input_for_type`: handle `list[Message]` target — wrap plain strings/Message objects, convert lists of dicts item-by-item, pass structured workflow inputs through unchanged. - Add 12 regression tests (57 total pass). * fix: resolve pyright unknown-type errors in parse_input_for_type --------- Co-authored-by: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>