3131 FunctionInvocationContext ,
3232 MiddlewareTypes ,
3333 _as_middleware_list , # pyright: ignore[reportPrivateUsage]
34+ _copy_middleware_sequence , # pyright: ignore[reportPrivateUsage]
3435 categorize_middleware ,
3536)
3637from ._serialization import SerializationMixin
@@ -439,7 +440,7 @@ def __init__(
439440 name : str | None = None ,
440441 description : str | None = None ,
441442 context_providers : Sequence [ContextProvider ] | None = None ,
442- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
443+ middleware : Sequence [MiddlewareTypes ] | None = None ,
443444 additional_properties : MutableMapping [str , Any ] | None = None ,
444445 ) -> None :
445446 """Initialize a BaseAgent instance.
@@ -450,10 +451,8 @@ def __init__(
450451 name: The name of the agent, can be None.
451452 description: The description of the agent.
452453 context_providers: Context providers to include during agent invocation.
453- middleware: List of middleware, or a single middleware object (including a
454- ``MiddlewareBundle``) which is treated as a one-element list. The
455- constructor copies the sequence; assign to or mutate the
456- ``middleware`` attribute for post-construction changes.
454+ middleware: List of middleware. The constructor copies the sequence; assign
455+ to or mutate the ``middleware`` attribute for post-construction changes.
457456 additional_properties: Additional properties set on the agent.
458457 """
459458 if id is None :
@@ -462,11 +461,8 @@ def __init__(
462461 self .name = name
463462 self .description = description
464463 self .context_providers : list [ContextProvider ] = list (context_providers or [])
465- # Canonicalize storage: the bare-source rule (a single middleware object or a
466- # MiddlewareBundle is one element) is owned by _as_middleware_list; storing a
467- # normalized list keeps the declared attribute type honest.
468464 self .middleware : list [MiddlewareTypes ] | None = (
469- _as_middleware_list (middleware ) if middleware is not None else None
465+ _copy_middleware_sequence (middleware ) if middleware is not None else None
470466 )
471467 self .additional_properties : dict [str , Any ] = cast (dict [str , Any ], additional_properties or {})
472468
@@ -819,7 +815,7 @@ def __init__(
819815 tools : ToolTypes | Callable [..., Any ] | Sequence [ToolTypes | Callable [..., Any ]] | None = None ,
820816 default_options : OptionsCoT | None = None ,
821817 context_providers : Sequence [ContextProvider ] | None = None ,
822- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
818+ middleware : Sequence [MiddlewareTypes ] | None = None ,
823819 require_per_service_call_history_persistence : bool = False ,
824820 compaction_strategy : CompactionStrategy | None = None ,
825821 tokenizer : TokenizerProtocol | None = None ,
@@ -838,8 +834,6 @@ def __init__(
838834 description: A brief description of the agent's purpose.
839835 context_providers: Context providers to include during agent invocation.
840836 middleware: List of middleware to intercept agent and function invocations.
841- A single middleware object (including a ``MiddlewareBundle``) is
842- treated as a one-element list.
843837 require_per_service_call_history_persistence: When True (and a HistoryProvider is
844838 present), the provider always persists history via per-service-call middleware,
845839 regardless of whether the client stores history server-side. If the client does
@@ -1808,7 +1802,7 @@ def run(
18081802 * ,
18091803 stream : Literal [False ] = ...,
18101804 session : AgentSession | None = None ,
1811- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
1805+ middleware : Sequence [MiddlewareTypes ] | None = None ,
18121806 tools : ToolTypes | Callable [..., Any ] | Sequence [ToolTypes | Callable [..., Any ]] | None = None ,
18131807 options : ChatOptions [ResponseModelBoundT ],
18141808 compaction_strategy : CompactionStrategy | None = None ,
@@ -1824,7 +1818,7 @@ def run(
18241818 * ,
18251819 stream : Literal [False ] = ...,
18261820 session : AgentSession | None = None ,
1827- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
1821+ middleware : Sequence [MiddlewareTypes ] | None = None ,
18281822 tools : ToolTypes | Callable [..., Any ] | Sequence [ToolTypes | Callable [..., Any ]] | None = None ,
18291823 options : OptionsCoT | ChatOptions [None ] | None = None ,
18301824 compaction_strategy : CompactionStrategy | None = None ,
@@ -1840,7 +1834,7 @@ def run(
18401834 * ,
18411835 stream : Literal [True ],
18421836 session : AgentSession | None = None ,
1843- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
1837+ middleware : Sequence [MiddlewareTypes ] | None = None ,
18441838 tools : ToolTypes | Callable [..., Any ] | Sequence [ToolTypes | Callable [..., Any ]] | None = None ,
18451839 options : OptionsCoT | ChatOptions [Any ] | None = None ,
18461840 compaction_strategy : CompactionStrategy | None = None ,
@@ -1855,7 +1849,7 @@ def run(
18551849 * ,
18561850 stream : bool = False ,
18571851 session : AgentSession | None = None ,
1858- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
1852+ middleware : Sequence [MiddlewareTypes ] | None = None ,
18591853 tools : ToolTypes | Callable [..., Any ] | Sequence [ToolTypes | Callable [..., Any ]] | None = None ,
18601854 options : OptionsCoT | ChatOptions [Any ] | None = None ,
18611855 compaction_strategy : CompactionStrategy | None = None ,
@@ -1893,7 +1887,7 @@ def __init__(
18931887 tools : ToolTypes | Callable [..., Any ] | Sequence [ToolTypes | Callable [..., Any ]] | None = None ,
18941888 default_options : OptionsCoT | None = None ,
18951889 context_providers : Sequence [ContextProvider ] | None = None ,
1896- middleware : MiddlewareTypes | Sequence [MiddlewareTypes ] | None = None ,
1890+ middleware : Sequence [MiddlewareTypes ] | None = None ,
18971891 require_per_service_call_history_persistence : bool = False ,
18981892 compaction_strategy : CompactionStrategy | None = None ,
18991893 tokenizer : TokenizerProtocol | None = None ,
0 commit comments