@@ -245,7 +245,7 @@ async def run(
245
245
result_type : None = None ,
246
246
message_history : list [_messages .ModelMessage ] | None = None ,
247
247
model : models .Model | models .KnownModelName | None = None ,
248
- deps : AgentDepsT = None ,
248
+ deps : AgentDepsT | None = None ,
249
249
model_settings : ModelSettings | None = None ,
250
250
usage_limits : _usage .UsageLimits | None = None ,
251
251
usage : _usage .Usage | None = None ,
@@ -260,7 +260,7 @@ async def run(
260
260
result_type : type [RunResultDataT ],
261
261
message_history : list [_messages .ModelMessage ] | None = None ,
262
262
model : models .Model | models .KnownModelName | None = None ,
263
- deps : AgentDepsT = None ,
263
+ deps : AgentDepsT | None = None ,
264
264
model_settings : ModelSettings | None = None ,
265
265
usage_limits : _usage .UsageLimits | None = None ,
266
266
usage : _usage .Usage | None = None ,
@@ -274,7 +274,7 @@ async def run(
274
274
result_type : type [RunResultDataT ] | None = None ,
275
275
message_history : list [_messages .ModelMessage ] | None = None ,
276
276
model : models .Model | models .KnownModelName | None = None ,
277
- deps : AgentDepsT = None ,
277
+ deps : AgentDepsT | None = None ,
278
278
model_settings : ModelSettings | None = None ,
279
279
usage_limits : _usage .UsageLimits | None = None ,
280
280
usage : _usage .Usage | None = None ,
@@ -338,7 +338,7 @@ async def iter(
338
338
result_type : type [RunResultDataT ] | None = None ,
339
339
message_history : list [_messages .ModelMessage ] | None = None ,
340
340
model : models .Model | models .KnownModelName | None = None ,
341
- deps : AgentDepsT = None ,
341
+ deps : AgentDepsT | None = None ,
342
342
model_settings : ModelSettings | None = None ,
343
343
usage_limits : _usage .UsageLimits | None = None ,
344
344
usage : _usage .Usage | None = None ,
@@ -499,7 +499,7 @@ def run_sync(
499
499
* ,
500
500
message_history : list [_messages .ModelMessage ] | None = None ,
501
501
model : models .Model | models .KnownModelName | None = None ,
502
- deps : AgentDepsT = None ,
502
+ deps : AgentDepsT | None = None ,
503
503
model_settings : ModelSettings | None = None ,
504
504
usage_limits : _usage .UsageLimits | None = None ,
505
505
usage : _usage .Usage | None = None ,
@@ -514,7 +514,7 @@ def run_sync(
514
514
result_type : type [RunResultDataT ] | None ,
515
515
message_history : list [_messages .ModelMessage ] | None = None ,
516
516
model : models .Model | models .KnownModelName | None = None ,
517
- deps : AgentDepsT = None ,
517
+ deps : AgentDepsT | None = None ,
518
518
model_settings : ModelSettings | None = None ,
519
519
usage_limits : _usage .UsageLimits | None = None ,
520
520
usage : _usage .Usage | None = None ,
@@ -528,7 +528,7 @@ def run_sync(
528
528
result_type : type [RunResultDataT ] | None = None ,
529
529
message_history : list [_messages .ModelMessage ] | None = None ,
530
530
model : models .Model | models .KnownModelName | None = None ,
531
- deps : AgentDepsT = None ,
531
+ deps : AgentDepsT | None = None ,
532
532
model_settings : ModelSettings | None = None ,
533
533
usage_limits : _usage .UsageLimits | None = None ,
534
534
usage : _usage .Usage | None = None ,
@@ -589,7 +589,7 @@ def run_stream(
589
589
result_type : None = None ,
590
590
message_history : list [_messages .ModelMessage ] | None = None ,
591
591
model : models .Model | models .KnownModelName | None = None ,
592
- deps : AgentDepsT = None ,
592
+ deps : AgentDepsT | None = None ,
593
593
model_settings : ModelSettings | None = None ,
594
594
usage_limits : _usage .UsageLimits | None = None ,
595
595
usage : _usage .Usage | None = None ,
@@ -604,7 +604,7 @@ def run_stream(
604
604
result_type : type [RunResultDataT ],
605
605
message_history : list [_messages .ModelMessage ] | None = None ,
606
606
model : models .Model | models .KnownModelName | None = None ,
607
- deps : AgentDepsT = None ,
607
+ deps : AgentDepsT | None = None ,
608
608
model_settings : ModelSettings | None = None ,
609
609
usage_limits : _usage .UsageLimits | None = None ,
610
610
usage : _usage .Usage | None = None ,
@@ -619,7 +619,7 @@ async def run_stream( # noqa C901
619
619
result_type : type [RunResultDataT ] | None = None ,
620
620
message_history : list [_messages .ModelMessage ] | None = None ,
621
621
model : models .Model | models .KnownModelName | None = None ,
622
- deps : AgentDepsT = None ,
622
+ deps : AgentDepsT | None = None ,
623
623
model_settings : ModelSettings | None = None ,
624
624
usage_limits : _usage .UsageLimits | None = None ,
625
625
usage : _usage .Usage | None = None ,
@@ -685,15 +685,20 @@ async def stream_to_final(
685
685
s : models .StreamedResponse ,
686
686
) -> FinalResult [models .StreamedResponse ] | None :
687
687
result_schema = graph_ctx .deps .result_schema
688
+ parts_seen : list [_messages .ModelResponsePart ] = []
689
+ has_tool_call = False
688
690
async for maybe_part_event in streamed_response :
689
691
if isinstance (maybe_part_event , _messages .PartStartEvent ):
690
692
new_part = maybe_part_event .part
691
- if isinstance (new_part , _messages .TextPart ):
692
- if _agent_graph .allow_text_result (result_schema ):
693
- return FinalResult (s , None , None )
694
- elif isinstance (new_part , _messages .ToolCallPart ) and result_schema :
693
+ parts_seen .append (new_part )
694
+ if isinstance (new_part , _messages .ToolCallPart ) and result_schema :
695
+ has_tool_call = True
695
696
for call , _ in result_schema .find_tool ([new_part ]):
696
697
return FinalResult (s , call .tool_name , call .tool_call_id )
698
+ # Only check for final result after seeing all parts
699
+ if not has_tool_call and len (parts_seen ) == 1 and isinstance (parts_seen [0 ], _messages .TextPart ):
700
+ if _agent_graph .allow_text_result (result_schema ):
701
+ return FinalResult (s , None , None )
697
702
return None
698
703
699
704
final_result_details = await stream_to_final (streamed_response )
@@ -1192,7 +1197,7 @@ def _get_model(self, model: models.Model | models.KnownModelName | None) -> mode
1192
1197
1193
1198
return model_
1194
1199
1195
- def _get_deps (self : Agent [T , ResultDataT ], deps : T ) -> T :
1200
+ def _get_deps (self : Agent [T , ResultDataT ], deps : T | None ) -> T :
1196
1201
"""Get deps for a run.
1197
1202
1198
1203
If we've overridden deps via `_override_deps`, use that, otherwise use the deps passed to the call.
@@ -1202,7 +1207,9 @@ def _get_deps(self: Agent[T, ResultDataT], deps: T) -> T:
1202
1207
if some_deps := self ._override_deps :
1203
1208
return some_deps .value
1204
1209
else :
1205
- return deps
1210
+ if deps is None and self ._deps_type is not NoneType :
1211
+ raise ValueError ("deps cannot be None when _override_deps is not set and deps_type is not NoneType" )
1212
+ return deps # type: ignore
1206
1213
1207
1214
def _infer_name (self , function_frame : FrameType | None ) -> None :
1208
1215
"""Infer the agent name from the call frame.
0 commit comments