agno 2.4.6__py3-none-any.whl → 2.4.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agno/db/singlestore/singlestore.py +4 -5
- agno/knowledge/embedder/aws_bedrock.py +325 -106
- agno/knowledge/reranker/aws_bedrock.py +299 -0
- agno/learn/machine.py +5 -6
- agno/run/workflow.py +3 -0
- agno/tools/mcp/mcp.py +26 -1
- agno/vectordb/lancedb/lance_db.py +9 -9
- agno/workflow/condition.py +135 -56
- {agno-2.4.6.dist-info → agno-2.4.7.dist-info}/METADATA +2 -2
- {agno-2.4.6.dist-info → agno-2.4.7.dist-info}/RECORD +13 -12
- {agno-2.4.6.dist-info → agno-2.4.7.dist-info}/WHEEL +0 -0
- {agno-2.4.6.dist-info → agno-2.4.7.dist-info}/licenses/LICENSE +0 -0
- {agno-2.4.6.dist-info → agno-2.4.7.dist-info}/top_level.txt +0 -0
agno/workflow/condition.py
CHANGED
|
@@ -17,6 +17,10 @@ from agno.utils.log import log_debug, logger
|
|
|
17
17
|
from agno.workflow.step import Step
|
|
18
18
|
from agno.workflow.types import StepInput, StepOutput, StepType
|
|
19
19
|
|
|
20
|
+
# Constants for condition branch identifiers
|
|
21
|
+
CONDITION_BRANCH_IF = "if"
|
|
22
|
+
CONDITION_BRANCH_ELSE = "else"
|
|
23
|
+
|
|
20
24
|
WorkflowSteps = List[
|
|
21
25
|
Union[
|
|
22
26
|
Callable[
|
|
@@ -34,7 +38,12 @@ WorkflowSteps = List[
|
|
|
34
38
|
|
|
35
39
|
@dataclass
|
|
36
40
|
class Condition:
|
|
37
|
-
"""A condition that executes a step (or list of steps) if the condition is met
|
|
41
|
+
"""A condition that executes a step (or list of steps) if the condition is met.
|
|
42
|
+
|
|
43
|
+
If the condition evaluates to True, the `steps` are executed.
|
|
44
|
+
If the condition evaluates to False and `else_steps` is provided (and not empty),
|
|
45
|
+
the `else_steps` are executed instead.
|
|
46
|
+
"""
|
|
38
47
|
|
|
39
48
|
# Evaluator should only return boolean
|
|
40
49
|
evaluator: Union[
|
|
@@ -44,6 +53,9 @@ class Condition:
|
|
|
44
53
|
]
|
|
45
54
|
steps: WorkflowSteps
|
|
46
55
|
|
|
56
|
+
# Steps to execute when condition is False (optional)
|
|
57
|
+
else_steps: Optional[WorkflowSteps] = None
|
|
58
|
+
|
|
47
59
|
name: Optional[str] = None
|
|
48
60
|
description: Optional[str] = None
|
|
49
61
|
|
|
@@ -57,20 +69,27 @@ class Condition:
|
|
|
57
69
|
from agno.workflow.step import Step
|
|
58
70
|
from agno.workflow.steps import Steps
|
|
59
71
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
def prepare_step_list(steps: WorkflowSteps) -> WorkflowSteps:
|
|
73
|
+
"""Helper to prepare a list of steps."""
|
|
74
|
+
prepared: WorkflowSteps = []
|
|
75
|
+
for step in steps:
|
|
76
|
+
if callable(step) and hasattr(step, "__name__"):
|
|
77
|
+
prepared.append(Step(name=step.__name__, description="User-defined callable step", executor=step))
|
|
78
|
+
elif isinstance(step, Agent):
|
|
79
|
+
prepared.append(Step(name=step.name, description=step.description, agent=step))
|
|
80
|
+
elif isinstance(step, Team):
|
|
81
|
+
prepared.append(Step(name=step.name, description=step.description, team=step))
|
|
82
|
+
elif isinstance(step, (Step, Steps, Loop, Parallel, Condition, Router)):
|
|
83
|
+
prepared.append(step)
|
|
84
|
+
else:
|
|
85
|
+
raise ValueError(f"Invalid step type: {type(step).__name__}")
|
|
86
|
+
return prepared
|
|
87
|
+
|
|
88
|
+
self.steps = prepare_step_list(self.steps)
|
|
72
89
|
|
|
73
|
-
|
|
90
|
+
# Also prepare else_steps if provided and not empty
|
|
91
|
+
if self.else_steps and len(self.else_steps) > 0:
|
|
92
|
+
self.else_steps = prepare_step_list(self.else_steps)
|
|
74
93
|
|
|
75
94
|
def _update_step_input_from_outputs(
|
|
76
95
|
self,
|
|
@@ -169,6 +188,10 @@ class Condition:
|
|
|
169
188
|
except Exception:
|
|
170
189
|
return False
|
|
171
190
|
|
|
191
|
+
def _has_else_steps(self) -> bool:
|
|
192
|
+
"""Check if else_steps is provided and not empty."""
|
|
193
|
+
return self.else_steps is not None and len(self.else_steps) > 0
|
|
194
|
+
|
|
172
195
|
def execute(
|
|
173
196
|
self,
|
|
174
197
|
step_input: StepInput,
|
|
@@ -183,7 +206,12 @@ class Condition:
|
|
|
183
206
|
num_history_runs: int = 3,
|
|
184
207
|
background_tasks: Optional[Any] = None,
|
|
185
208
|
) -> StepOutput:
|
|
186
|
-
"""Execute the condition and its steps with sequential chaining
|
|
209
|
+
"""Execute the condition and its steps with sequential chaining.
|
|
210
|
+
|
|
211
|
+
If condition is True, executes `steps`.
|
|
212
|
+
If condition is False and `else_steps` is provided (and not empty), executes `else_steps`.
|
|
213
|
+
If condition is False and no `else_steps`, returns a "not met" message.
|
|
214
|
+
"""
|
|
187
215
|
log_debug(f"Condition Start: {self.name}", center=True, symbol="-")
|
|
188
216
|
|
|
189
217
|
conditional_step_id = str(uuid4())
|
|
@@ -198,7 +226,17 @@ class Condition:
|
|
|
198
226
|
|
|
199
227
|
log_debug(f"Condition {self.name} evaluated to: {condition_result}")
|
|
200
228
|
|
|
201
|
-
|
|
229
|
+
# Determine which steps to execute
|
|
230
|
+
if condition_result:
|
|
231
|
+
steps_to_execute = self.steps
|
|
232
|
+
branch = CONDITION_BRANCH_IF
|
|
233
|
+
log_debug(f"Condition {self.name} met, executing {len(steps_to_execute)} steps (if branch)")
|
|
234
|
+
elif self._has_else_steps():
|
|
235
|
+
steps_to_execute = self.else_steps # type: ignore[assignment]
|
|
236
|
+
branch = CONDITION_BRANCH_ELSE
|
|
237
|
+
log_debug(f"Condition {self.name} not met, executing {len(steps_to_execute)} else_steps (else branch)")
|
|
238
|
+
else:
|
|
239
|
+
# No else_steps provided, return "not met" message
|
|
202
240
|
log_debug(f"Condition {self.name} not met, skipping {len(self.steps)} steps")
|
|
203
241
|
return StepOutput(
|
|
204
242
|
step_name=self.name,
|
|
@@ -208,12 +246,11 @@ class Condition:
|
|
|
208
246
|
success=True,
|
|
209
247
|
)
|
|
210
248
|
|
|
211
|
-
log_debug(f"Condition {self.name} met, executing {len(self.steps)} steps")
|
|
212
249
|
all_results: List[StepOutput] = []
|
|
213
250
|
current_step_input = step_input
|
|
214
|
-
condition_step_outputs = {}
|
|
251
|
+
condition_step_outputs: Dict[str, StepOutput] = {}
|
|
215
252
|
|
|
216
|
-
for i, step in enumerate(
|
|
253
|
+
for i, step in enumerate(steps_to_execute):
|
|
217
254
|
try:
|
|
218
255
|
step_output = step.execute( # type: ignore[union-attr]
|
|
219
256
|
current_step_input,
|
|
@@ -234,7 +271,7 @@ class Condition:
|
|
|
234
271
|
all_results.extend(step_output)
|
|
235
272
|
if step_output:
|
|
236
273
|
step_name = getattr(step, "name", f"step_{i}")
|
|
237
|
-
log_debug(f"Executing condition step {i + 1}/{len(
|
|
274
|
+
log_debug(f"Executing condition step {i + 1}/{len(steps_to_execute)}: {step_name}")
|
|
238
275
|
|
|
239
276
|
condition_step_outputs[step_name] = step_output[-1]
|
|
240
277
|
|
|
@@ -269,13 +306,13 @@ class Condition:
|
|
|
269
306
|
all_results.append(error_output)
|
|
270
307
|
break
|
|
271
308
|
|
|
272
|
-
log_debug(f"Condition End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
309
|
+
log_debug(f"Condition End: {self.name} ({len(all_results)} results, {branch} branch)", center=True, symbol="-")
|
|
273
310
|
|
|
274
311
|
return StepOutput(
|
|
275
312
|
step_name=self.name,
|
|
276
313
|
step_id=conditional_step_id,
|
|
277
314
|
step_type=StepType.CONDITION,
|
|
278
|
-
content=f"Condition {self.name} completed with {len(all_results)} results",
|
|
315
|
+
content=f"Condition {self.name} completed with {len(all_results)} results ({branch} branch)",
|
|
279
316
|
success=all(result.success for result in all_results) if all_results else True,
|
|
280
317
|
error=None,
|
|
281
318
|
stop=any(result.stop for result in all_results) if all_results else False,
|
|
@@ -300,7 +337,12 @@ class Condition:
|
|
|
300
337
|
num_history_runs: int = 3,
|
|
301
338
|
background_tasks: Optional[Any] = None,
|
|
302
339
|
) -> Iterator[Union[WorkflowRunOutputEvent, StepOutput]]:
|
|
303
|
-
"""Execute the condition with streaming support
|
|
340
|
+
"""Execute the condition with streaming support.
|
|
341
|
+
|
|
342
|
+
If condition is True, executes `steps`.
|
|
343
|
+
If condition is False and `else_steps` is provided (and not empty), executes `else_steps`.
|
|
344
|
+
If condition is False and no `else_steps`, yields completed event and returns.
|
|
345
|
+
"""
|
|
304
346
|
log_debug(f"Condition Start: {self.name}", center=True, symbol="-")
|
|
305
347
|
|
|
306
348
|
conditional_step_id = str(uuid4())
|
|
@@ -328,9 +370,18 @@ class Condition:
|
|
|
328
370
|
parent_step_id=parent_step_id,
|
|
329
371
|
)
|
|
330
372
|
|
|
331
|
-
|
|
373
|
+
# Determine which steps to execute
|
|
374
|
+
if condition_result:
|
|
375
|
+
steps_to_execute = self.steps
|
|
376
|
+
branch = CONDITION_BRANCH_IF
|
|
377
|
+
log_debug(f"Condition {self.name} met, executing {len(steps_to_execute)} steps (if branch)")
|
|
378
|
+
elif self._has_else_steps():
|
|
379
|
+
steps_to_execute = self.else_steps # type: ignore[assignment]
|
|
380
|
+
branch = CONDITION_BRANCH_ELSE
|
|
381
|
+
log_debug(f"Condition {self.name} not met, executing {len(steps_to_execute)} else_steps (else branch)")
|
|
382
|
+
else:
|
|
383
|
+
# No else_steps provided, yield completed event and return
|
|
332
384
|
if stream_events and workflow_run_response:
|
|
333
|
-
# Yield condition completed event for empty case
|
|
334
385
|
yield ConditionExecutionCompletedEvent(
|
|
335
386
|
run_id=workflow_run_response.run_id or "",
|
|
336
387
|
workflow_name=workflow_run_response.workflow_name or "",
|
|
@@ -340,20 +391,20 @@ class Condition:
|
|
|
340
391
|
step_index=step_index,
|
|
341
392
|
condition_result=False,
|
|
342
393
|
executed_steps=0,
|
|
394
|
+
branch=None,
|
|
343
395
|
step_results=[],
|
|
344
396
|
step_id=conditional_step_id,
|
|
345
397
|
parent_step_id=parent_step_id,
|
|
346
398
|
)
|
|
347
399
|
return
|
|
348
400
|
|
|
349
|
-
|
|
350
|
-
all_results = []
|
|
401
|
+
all_results: List[StepOutput] = []
|
|
351
402
|
current_step_input = step_input
|
|
352
|
-
condition_step_outputs = {}
|
|
403
|
+
condition_step_outputs: Dict[str, StepOutput] = {}
|
|
353
404
|
|
|
354
|
-
for i, step in enumerate(
|
|
405
|
+
for i, step in enumerate(steps_to_execute):
|
|
355
406
|
try:
|
|
356
|
-
step_outputs_for_step = []
|
|
407
|
+
step_outputs_for_step: List[StepOutput] = []
|
|
357
408
|
|
|
358
409
|
# Create child index for each step within condition
|
|
359
410
|
if step_index is None or isinstance(step_index, int):
|
|
@@ -426,7 +477,7 @@ class Condition:
|
|
|
426
477
|
all_results.append(error_output)
|
|
427
478
|
break
|
|
428
479
|
|
|
429
|
-
log_debug(f"Condition End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
480
|
+
log_debug(f"Condition End: {self.name} ({len(all_results)} results, {branch} branch)", center=True, symbol="-")
|
|
430
481
|
if stream_events and workflow_run_response:
|
|
431
482
|
# Yield condition completed event
|
|
432
483
|
yield ConditionExecutionCompletedEvent(
|
|
@@ -436,8 +487,9 @@ class Condition:
|
|
|
436
487
|
session_id=workflow_run_response.session_id or "",
|
|
437
488
|
step_name=self.name,
|
|
438
489
|
step_index=step_index,
|
|
439
|
-
condition_result=
|
|
440
|
-
executed_steps=len(
|
|
490
|
+
condition_result=condition_result,
|
|
491
|
+
executed_steps=len(steps_to_execute),
|
|
492
|
+
branch=branch,
|
|
441
493
|
step_results=all_results,
|
|
442
494
|
step_id=conditional_step_id,
|
|
443
495
|
parent_step_id=parent_step_id,
|
|
@@ -447,7 +499,7 @@ class Condition:
|
|
|
447
499
|
step_name=self.name,
|
|
448
500
|
step_id=conditional_step_id,
|
|
449
501
|
step_type=StepType.CONDITION,
|
|
450
|
-
content=f"Condition {self.name} completed with {len(all_results)} results",
|
|
502
|
+
content=f"Condition {self.name} completed with {len(all_results)} results ({branch} branch)",
|
|
451
503
|
success=all(result.success for result in all_results) if all_results else True,
|
|
452
504
|
stop=any(result.stop for result in all_results) if all_results else False,
|
|
453
505
|
steps=all_results,
|
|
@@ -467,7 +519,12 @@ class Condition:
|
|
|
467
519
|
num_history_runs: int = 3,
|
|
468
520
|
background_tasks: Optional[Any] = None,
|
|
469
521
|
) -> StepOutput:
|
|
470
|
-
"""Async execute the condition and its steps with sequential chaining
|
|
522
|
+
"""Async execute the condition and its steps with sequential chaining.
|
|
523
|
+
|
|
524
|
+
If condition is True, executes `steps`.
|
|
525
|
+
If condition is False and `else_steps` is provided (and not empty), executes `else_steps`.
|
|
526
|
+
If condition is False and no `else_steps`, returns a "not met" message.
|
|
527
|
+
"""
|
|
471
528
|
log_debug(f"Condition Start: {self.name}", center=True, symbol="-")
|
|
472
529
|
|
|
473
530
|
conditional_step_id = str(uuid4())
|
|
@@ -481,24 +538,32 @@ class Condition:
|
|
|
481
538
|
condition_result = await self._aevaluate_condition(step_input, session_state=session_state)
|
|
482
539
|
log_debug(f"Condition {self.name} evaluated to: {condition_result}")
|
|
483
540
|
|
|
484
|
-
|
|
541
|
+
# Determine which steps to execute
|
|
542
|
+
if condition_result:
|
|
543
|
+
steps_to_execute = self.steps
|
|
544
|
+
branch = CONDITION_BRANCH_IF
|
|
545
|
+
log_debug(f"Condition {self.name} met, executing {len(steps_to_execute)} steps (if branch)")
|
|
546
|
+
elif self._has_else_steps():
|
|
547
|
+
steps_to_execute = self.else_steps # type: ignore[assignment]
|
|
548
|
+
branch = CONDITION_BRANCH_ELSE
|
|
549
|
+
log_debug(f"Condition {self.name} not met, executing {len(steps_to_execute)} else_steps (else branch)")
|
|
550
|
+
else:
|
|
551
|
+
# No else_steps provided, return "not met" message
|
|
485
552
|
log_debug(f"Condition {self.name} not met, skipping {len(self.steps)} steps")
|
|
486
553
|
return StepOutput(
|
|
487
554
|
step_name=self.name,
|
|
488
|
-
step_id=
|
|
555
|
+
step_id=conditional_step_id,
|
|
489
556
|
step_type=StepType.CONDITION,
|
|
490
557
|
content=f"Condition {self.name} not met - skipped {len(self.steps)} steps",
|
|
491
558
|
success=True,
|
|
492
559
|
)
|
|
493
560
|
|
|
494
|
-
log_debug(f"Condition {self.name} met, executing {len(self.steps)} steps")
|
|
495
|
-
|
|
496
561
|
# Chain steps sequentially like Loop does
|
|
497
562
|
all_results: List[StepOutput] = []
|
|
498
563
|
current_step_input = step_input
|
|
499
|
-
condition_step_outputs = {}
|
|
564
|
+
condition_step_outputs: Dict[str, StepOutput] = {}
|
|
500
565
|
|
|
501
|
-
for i, step in enumerate(
|
|
566
|
+
for i, step in enumerate(steps_to_execute):
|
|
502
567
|
try:
|
|
503
568
|
step_output = await step.aexecute( # type: ignore[union-attr]
|
|
504
569
|
current_step_input,
|
|
@@ -552,13 +617,13 @@ class Condition:
|
|
|
552
617
|
all_results.append(error_output)
|
|
553
618
|
break
|
|
554
619
|
|
|
555
|
-
log_debug(f"Condition End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
620
|
+
log_debug(f"Condition End: {self.name} ({len(all_results)} results, {branch} branch)", center=True, symbol="-")
|
|
556
621
|
|
|
557
622
|
return StepOutput(
|
|
558
623
|
step_name=self.name,
|
|
559
624
|
step_id=conditional_step_id,
|
|
560
625
|
step_type=StepType.CONDITION,
|
|
561
|
-
content=f"Condition {self.name} completed with {len(all_results)} results",
|
|
626
|
+
content=f"Condition {self.name} completed with {len(all_results)} results ({branch} branch)",
|
|
562
627
|
success=all(result.success for result in all_results) if all_results else True,
|
|
563
628
|
error=None,
|
|
564
629
|
stop=any(result.stop for result in all_results) if all_results else False,
|
|
@@ -583,7 +648,12 @@ class Condition:
|
|
|
583
648
|
num_history_runs: int = 3,
|
|
584
649
|
background_tasks: Optional[Any] = None,
|
|
585
650
|
) -> AsyncIterator[Union[WorkflowRunOutputEvent, TeamRunOutputEvent, RunOutputEvent, StepOutput]]:
|
|
586
|
-
"""Async execute the condition with streaming support
|
|
651
|
+
"""Async execute the condition with streaming support.
|
|
652
|
+
|
|
653
|
+
If condition is True, executes `steps`.
|
|
654
|
+
If condition is False and `else_steps` is provided (and not empty), executes `else_steps`.
|
|
655
|
+
If condition is False and no `else_steps`, yields completed event and returns.
|
|
656
|
+
"""
|
|
587
657
|
log_debug(f"Condition Start: {self.name}", center=True, symbol="-")
|
|
588
658
|
|
|
589
659
|
conditional_step_id = str(uuid4())
|
|
@@ -611,9 +681,18 @@ class Condition:
|
|
|
611
681
|
parent_step_id=parent_step_id,
|
|
612
682
|
)
|
|
613
683
|
|
|
614
|
-
|
|
684
|
+
# Determine which steps to execute
|
|
685
|
+
if condition_result:
|
|
686
|
+
steps_to_execute = self.steps
|
|
687
|
+
branch = CONDITION_BRANCH_IF
|
|
688
|
+
log_debug(f"Condition {self.name} met, executing {len(steps_to_execute)} steps (if branch)")
|
|
689
|
+
elif self._has_else_steps():
|
|
690
|
+
steps_to_execute = self.else_steps # type: ignore[assignment]
|
|
691
|
+
branch = CONDITION_BRANCH_ELSE
|
|
692
|
+
log_debug(f"Condition {self.name} not met, executing {len(steps_to_execute)} else_steps (else branch)")
|
|
693
|
+
else:
|
|
694
|
+
# No else_steps provided, yield completed event and return
|
|
615
695
|
if stream_events and workflow_run_response:
|
|
616
|
-
# Yield condition completed event for empty case
|
|
617
696
|
yield ConditionExecutionCompletedEvent(
|
|
618
697
|
run_id=workflow_run_response.run_id or "",
|
|
619
698
|
workflow_name=workflow_run_response.workflow_name or "",
|
|
@@ -623,22 +702,21 @@ class Condition:
|
|
|
623
702
|
step_index=step_index,
|
|
624
703
|
condition_result=False,
|
|
625
704
|
executed_steps=0,
|
|
705
|
+
branch=None,
|
|
626
706
|
step_results=[],
|
|
627
707
|
step_id=conditional_step_id,
|
|
628
708
|
parent_step_id=parent_step_id,
|
|
629
709
|
)
|
|
630
710
|
return
|
|
631
711
|
|
|
632
|
-
log_debug(f"Condition {self.name} met, executing {len(self.steps)} steps")
|
|
633
|
-
|
|
634
712
|
# Chain steps sequentially like Loop does
|
|
635
|
-
all_results = []
|
|
713
|
+
all_results: List[StepOutput] = []
|
|
636
714
|
current_step_input = step_input
|
|
637
|
-
condition_step_outputs = {}
|
|
715
|
+
condition_step_outputs: Dict[str, StepOutput] = {}
|
|
638
716
|
|
|
639
|
-
for i, step in enumerate(
|
|
717
|
+
for i, step in enumerate(steps_to_execute):
|
|
640
718
|
try:
|
|
641
|
-
step_outputs_for_step = []
|
|
719
|
+
step_outputs_for_step: List[StepOutput] = []
|
|
642
720
|
|
|
643
721
|
# Create child index for each step within condition
|
|
644
722
|
if step_index is None or isinstance(step_index, int):
|
|
@@ -711,7 +789,7 @@ class Condition:
|
|
|
711
789
|
all_results.append(error_output)
|
|
712
790
|
break
|
|
713
791
|
|
|
714
|
-
log_debug(f"Condition End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
792
|
+
log_debug(f"Condition End: {self.name} ({len(all_results)} results, {branch} branch)", center=True, symbol="-")
|
|
715
793
|
|
|
716
794
|
if stream_events and workflow_run_response:
|
|
717
795
|
# Yield condition completed event
|
|
@@ -722,8 +800,9 @@ class Condition:
|
|
|
722
800
|
session_id=workflow_run_response.session_id or "",
|
|
723
801
|
step_name=self.name,
|
|
724
802
|
step_index=step_index,
|
|
725
|
-
condition_result=
|
|
726
|
-
executed_steps=len(
|
|
803
|
+
condition_result=condition_result,
|
|
804
|
+
executed_steps=len(steps_to_execute),
|
|
805
|
+
branch=branch,
|
|
727
806
|
step_results=all_results,
|
|
728
807
|
step_id=conditional_step_id,
|
|
729
808
|
parent_step_id=parent_step_id,
|
|
@@ -733,7 +812,7 @@ class Condition:
|
|
|
733
812
|
step_name=self.name,
|
|
734
813
|
step_id=conditional_step_id,
|
|
735
814
|
step_type=StepType.CONDITION,
|
|
736
|
-
content=f"Condition {self.name} completed with {len(all_results)} results",
|
|
815
|
+
content=f"Condition {self.name} completed with {len(all_results)} results ({branch} branch)",
|
|
737
816
|
success=all(result.success for result in all_results) if all_results else True,
|
|
738
817
|
stop=any(result.stop for result in all_results) if all_results else False,
|
|
739
818
|
steps=all_results,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.7
|
|
4
4
|
Summary: Agno: a lightweight library for building Multi-Agent Systems
|
|
5
5
|
Author-email: Ashpreet Bedi <ashpreet@agno.com>
|
|
6
6
|
Project-URL: homepage, https://agno.com
|
|
@@ -225,7 +225,7 @@ Requires-Dist: pgvector; extra == "pgvector"
|
|
|
225
225
|
Provides-Extra: chromadb
|
|
226
226
|
Requires-Dist: chromadb; extra == "chromadb"
|
|
227
227
|
Provides-Extra: lancedb
|
|
228
|
-
Requires-Dist: lancedb
|
|
228
|
+
Requires-Dist: lancedb>=0.26.0; extra == "lancedb"
|
|
229
229
|
Requires-Dist: tantivy; extra == "lancedb"
|
|
230
230
|
Provides-Extra: pylance
|
|
231
231
|
Requires-Dist: pylance; extra == "pylance"
|
|
@@ -94,7 +94,7 @@ agno/db/schemas/memory.py,sha256=soOeuQgLYHng0qZxzrRHf1lN574IW55lXGP403Qn1oY,207
|
|
|
94
94
|
agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
95
|
agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
|
|
96
96
|
agno/db/singlestore/schemas.py,sha256=wPzSrSQ3hVdUw385nmr8UmurHV6vtpAVuhYUlaLh1K4,9750
|
|
97
|
-
agno/db/singlestore/singlestore.py,sha256=
|
|
97
|
+
agno/db/singlestore/singlestore.py,sha256=zCqDFd-YHPj7TsOUEr5cC7B67DtceKOI06wGjlmpnKo,121934
|
|
98
98
|
agno/db/singlestore/utils.py,sha256=vJ6QM-wbJBzA8l5ULYbJ5KLB9c3-GZqtb0NWdy5gg2c,14225
|
|
99
99
|
agno/db/sqlite/__init__.py,sha256=09V3i4y0-tBjt60--57ivZ__SaaS67GCsDT4Apzv-5Y,138
|
|
100
100
|
agno/db/sqlite/async_sqlite.py,sha256=BzvBibnsK654K48gx-aWzV7FhmYNS324JBUnoldILTk,136969
|
|
@@ -144,7 +144,7 @@ agno/knowledge/chunking/strategy.py,sha256=M8-2i5uXZCEYHswuzLcyAdZL1cgczd7-SAK3-
|
|
|
144
144
|
agno/knowledge/document/__init__.py,sha256=vxMAu103larPlcpJFG3sBg-sCATf-LZZO_SlOwlEY5E,81
|
|
145
145
|
agno/knowledge/document/base.py,sha256=kvoLSAxc8snrayo_-C6L3HxJVXwZiXd7Maq6VToLgfg,2087
|
|
146
146
|
agno/knowledge/embedder/__init__.py,sha256=RdjcB1qoXuGVLlIkD-hn3B4zs8ycabmCVRmZsG3RhCQ,81
|
|
147
|
-
agno/knowledge/embedder/aws_bedrock.py,sha256=
|
|
147
|
+
agno/knowledge/embedder/aws_bedrock.py,sha256=qTOt1NxIzF69mJvOuK9WHecGqkJjv23a7jnwxUj-iFg,23247
|
|
148
148
|
agno/knowledge/embedder/azure_openai.py,sha256=Fv-Yn7eHZnw3qhVU6AktLpj8kYy3E7ynLPOYAJryCYs,8521
|
|
149
149
|
agno/knowledge/embedder/base.py,sha256=PUyo0zzk1TlImKsmWORLhc74rNSEKIQcMcjP1sE7Pyk,746
|
|
150
150
|
agno/knowledge/embedder/cohere.py,sha256=riT-Q7sGaG-BgkYtaq9ONXLuoUt99TncOWLzfOSWwtE,14499
|
|
@@ -188,6 +188,7 @@ agno/knowledge/remote_content/__init__.py,sha256=3zIQf3-iUK0Jy3_DtrmFhJSPol-DOSQ
|
|
|
188
188
|
agno/knowledge/remote_content/config.py,sha256=vRCGYH_yvktB22QG6bDP4UXMitF0y2Riddkgw8xCPsk,7833
|
|
189
189
|
agno/knowledge/remote_content/remote_content.py,sha256=0LtdtGHx-n9l12qDvxVYWb6Nc0907HVc-RcRQtrM7h4,5731
|
|
190
190
|
agno/knowledge/reranker/__init__.py,sha256=6EK9EUQQY0ar-Jnev4hmlNyq2GwS_6UDMJXD2IBcFvE,74
|
|
191
|
+
agno/knowledge/reranker/aws_bedrock.py,sha256=d1ps7rvOz2FSQFZe1qruKptO6BX5c2elWe_423ky7x8,10600
|
|
191
192
|
agno/knowledge/reranker/base.py,sha256=GsPcMmBiI5gOX8XABpmQNeP478mp5ma-W-1n37P0-QM,376
|
|
192
193
|
agno/knowledge/reranker/cohere.py,sha256=2Be5blVyeZ3vYlnFa2NYvJuytjaCB8G2OWJ11pQz7vQ,2178
|
|
193
194
|
agno/knowledge/reranker/infinity.py,sha256=N9geg9xZqRdJZksfQcvbGJgMymXrQVJl_K5KICWqH8o,7193
|
|
@@ -195,7 +196,7 @@ agno/knowledge/reranker/sentence_transformer.py,sha256=ZN4SqnMZsUhg5G7AzlONM1_Uj
|
|
|
195
196
|
agno/learn/__init__.py,sha256=w4uS6ZDzfYyrYI9FjDP5mlYi6slCvU0XZ6jdV3HFSf8,1624
|
|
196
197
|
agno/learn/config.py,sha256=GxysFhbix8RdyDf_2kORTbcLUSdzRJfjEG-2y29OEkk,15791
|
|
197
198
|
agno/learn/curate.py,sha256=ywbtEkN9T1Bl1eJ794L24zLb_BX5H65bebjh4su1lvc,5248
|
|
198
|
-
agno/learn/machine.py,sha256=
|
|
199
|
+
agno/learn/machine.py,sha256=I6tJFrNUolnjDluOurBr0wp0Q411B-B2RBTMjRJeEDY,25516
|
|
199
200
|
agno/learn/schemas.py,sha256=Qb9TRITzXJ6QNciRAz7ijrER11hmYmzzC2vxs8M_USo,40491
|
|
200
201
|
agno/learn/utils.py,sha256=dUL_oKWHPyUWF5e2muJyNo9W4Y7fwePESI_APQUZ12g,5672
|
|
201
202
|
agno/learn/stores/__init__.py,sha256=c5kC8X5bgZwwRG7epKU5IHdJ-eA9qKcC9G756Xrk2CA,1306
|
|
@@ -401,7 +402,7 @@ agno/run/cancel.py,sha256=Tyxg4lxwSvO2wSZDG4OF82ORQU6MYBu94YLqrEnK09Y,3019
|
|
|
401
402
|
agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
|
|
402
403
|
agno/run/requirement.py,sha256=5M_L-3nKLPDS0tUxTbFNvgXgWfWUyEohQz_3bxNc39M,6817
|
|
403
404
|
agno/run/team.py,sha256=F3IRagtwuXil-wizeo9LVuv5jhS7R90nAleO5kuWFR4,30764
|
|
404
|
-
agno/run/workflow.py,sha256=
|
|
405
|
+
agno/run/workflow.py,sha256=s8Q6jZ48E6GXQ7DiWni91s041YQMhC-tbQ-JKoL6WPk,25260
|
|
405
406
|
agno/run/cancellation_management/__init__.py,sha256=tA_u4MeG2dgm8cWJRXy0X6HF4mv6Kc55gykoSnuMPf0,406
|
|
406
407
|
agno/run/cancellation_management/base.py,sha256=nNh5yqfjp4Bpn03RE7T2jzLbzvY007ckzGhd-XKmZpk,2408
|
|
407
408
|
agno/run/cancellation_management/in_memory_cancellation_manager.py,sha256=p04IxrXG8FcHG3X-YS-ApNAdVj8kY1ZKBeUavdypZjM,3956
|
|
@@ -544,7 +545,7 @@ agno/tools/zendesk.py,sha256=OgvK0bQGIHnRmN8X6OxyGI7P0Si6w4sodZr6FfmNR50,3084
|
|
|
544
545
|
agno/tools/zep.py,sha256=i3yDNlVJLM0CK8SFHi-64fs0DfHMUwqu1CCrMvzJ95M,19305
|
|
545
546
|
agno/tools/zoom.py,sha256=PD3l-JJ6VK1XJLXF8ciPScS6oRH8CHl7OQtoiZq8VK0,15963
|
|
546
547
|
agno/tools/mcp/__init__.py,sha256=VqnrxQzDMGcT9gRI5sXAmZ1ccuomGNCfHYQSYxlyZaw,278
|
|
547
|
-
agno/tools/mcp/mcp.py,sha256=
|
|
548
|
+
agno/tools/mcp/mcp.py,sha256=Id00Kni0eONxr_gcWy-_cV3jfCt-T2ZkIFg1REDcCjQ,27524
|
|
548
549
|
agno/tools/mcp/multi_mcp.py,sha256=lYO_euSw_gJdky6cZyJtQ53s1igrsMaxR-bL8DJMF60,25659
|
|
549
550
|
agno/tools/mcp/params.py,sha256=Ng9RhXeUgHCDh2mzPAKoAdsTctKfurrt5VYmbrUgfVA,666
|
|
550
551
|
agno/tools/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -633,7 +634,7 @@ agno/vectordb/clickhouse/index.py,sha256=_YW-8AuEYy5kzOHi0zIzjngpQPgJOBdSrn9BfEL
|
|
|
633
634
|
agno/vectordb/couchbase/__init__.py,sha256=dKZkcQLFN4r2_NIdXby4inzAAn4BDMlb9T2BW_i0_gQ,93
|
|
634
635
|
agno/vectordb/couchbase/couchbase.py,sha256=SDyNQGq_wD5mkUIQGkYtR7AZCUxf7fIw50YmI0N1T5U,65636
|
|
635
636
|
agno/vectordb/lancedb/__init__.py,sha256=tb9qvinKyWMTLjJYMwW_lhYHFvrfWTfHODtBfMj-NLE,111
|
|
636
|
-
agno/vectordb/lancedb/lance_db.py,sha256=
|
|
637
|
+
agno/vectordb/lancedb/lance_db.py,sha256=tbvXsEVcIsOjL6Suh9HUDcIvbWc8WNXQSX8v1n57pmA,41654
|
|
637
638
|
agno/vectordb/langchaindb/__init__.py,sha256=BxGs6tcEKTiydbVJL3P5djlnafS5Bbgql3u1k6vhW2w,108
|
|
638
639
|
agno/vectordb/langchaindb/langchaindb.py,sha256=AS-Jrh7gXKYkSHFiXKiD0kwL-FUFz10VbYksm8UEBAU,6391
|
|
639
640
|
agno/vectordb/lightrag/__init__.py,sha256=fgQpA8pZW-jEHI91SZ_xgmROmv14oKdwCQZ8LpyipaE,84
|
|
@@ -665,7 +666,7 @@ agno/vectordb/weaviate/index.py,sha256=y4XYPRZFksMfrrF85B4hn5AtmXM4SH--4CyLo27EH
|
|
|
665
666
|
agno/vectordb/weaviate/weaviate.py,sha256=B5mP2uGIbgMA1uP_JGWpjAJ7IUGm4ZHpVke_lQY0it4,40639
|
|
666
667
|
agno/workflow/__init__.py,sha256=4aTXmTeOFofdNm-LgvjlN0y78vmsCpQDwYvke-f34E4,761
|
|
667
668
|
agno/workflow/agent.py,sha256=PSt7X8BOgO9Rmh1YnT3I9HBq360IjdXfaKNzffqqiRw,12173
|
|
668
|
-
agno/workflow/condition.py,sha256=
|
|
669
|
+
agno/workflow/condition.py,sha256=Wur-Q6r5Vl4KkthaoBpPn06Duan5Zk49aJIsJLiLo-g,37410
|
|
669
670
|
agno/workflow/loop.py,sha256=9yX_JY3b14I5Rem4QtxUIj1hF1gFC-ICshv5kmnPIf0,34048
|
|
670
671
|
agno/workflow/parallel.py,sha256=PYdnWYimIBvHqzgQ13EpvITnmjCpogDOAaPqIrDmtTs,37057
|
|
671
672
|
agno/workflow/remote.py,sha256=-turwcZ0Nm0rsltJAFfG6IzyhTujJZs9lPoV-W2anUs,14144
|
|
@@ -674,8 +675,8 @@ agno/workflow/step.py,sha256=AgSugOOoWidfZGFtR5PMpgWSBpIeUQB45vmaUDnV7E8,77919
|
|
|
674
675
|
agno/workflow/steps.py,sha256=p1RdyTZIKDYOPdxU7FbsX_vySWehPWaobge76Q_UDac,26462
|
|
675
676
|
agno/workflow/types.py,sha256=t4304WCKB19QFdV3ixXZICcU8wtBza4EBCIz5Ve6MSQ,18035
|
|
676
677
|
agno/workflow/workflow.py,sha256=S4Iwx3LtpeE_XZ61slYvnM90BdnGhW6Gfax_BKEUG68,218609
|
|
677
|
-
agno-2.4.
|
|
678
|
-
agno-2.4.
|
|
679
|
-
agno-2.4.
|
|
680
|
-
agno-2.4.
|
|
681
|
-
agno-2.4.
|
|
678
|
+
agno-2.4.7.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
679
|
+
agno-2.4.7.dist-info/METADATA,sha256=7c2VNjm7zuh4jnQzTVP3MBRUKGvUlDc7I7VprKOe_XQ,21116
|
|
680
|
+
agno-2.4.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
681
|
+
agno-2.4.7.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
|
|
682
|
+
agno-2.4.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|