agno 2.1.2__py3-none-any.whl → 2.1.4__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/agent/agent.py +39 -69
- agno/db/dynamo/dynamo.py +8 -6
- agno/db/dynamo/schemas.py +1 -10
- agno/db/dynamo/utils.py +2 -2
- agno/db/firestore/firestore.py +1 -3
- agno/db/gcs_json/gcs_json_db.py +5 -3
- agno/db/in_memory/in_memory_db.py +7 -5
- agno/knowledge/embedder/fastembed.py +1 -1
- agno/models/aws/bedrock.py +1 -1
- agno/models/openrouter/openrouter.py +39 -1
- agno/models/vertexai/__init__.py +0 -0
- agno/models/vertexai/claude.py +74 -0
- agno/os/app.py +59 -5
- agno/os/interfaces/agui/utils.py +6 -0
- agno/os/mcp.py +3 -3
- agno/os/schema.py +2 -0
- agno/os/utils.py +4 -2
- agno/session/workflow.py +69 -1
- agno/team/team.py +29 -79
- agno/tools/file.py +4 -2
- agno/tools/function.py +36 -18
- agno/tools/google_drive.py +270 -0
- agno/utils/merge_dict.py +3 -3
- agno/utils/print_response/workflow.py +112 -12
- agno/workflow/condition.py +25 -0
- agno/workflow/loop.py +25 -0
- agno/workflow/parallel.py +142 -118
- agno/workflow/router.py +25 -0
- agno/workflow/step.py +138 -25
- agno/workflow/steps.py +25 -0
- agno/workflow/types.py +26 -1
- agno/workflow/workflow.py +234 -12
- {agno-2.1.2.dist-info → agno-2.1.4.dist-info}/METADATA +1 -1
- {agno-2.1.2.dist-info → agno-2.1.4.dist-info}/RECORD +37 -34
- {agno-2.1.2.dist-info → agno-2.1.4.dist-info}/WHEEL +0 -0
- {agno-2.1.2.dist-info → agno-2.1.4.dist-info}/licenses/LICENSE +0 -0
- {agno-2.1.2.dist-info → agno-2.1.4.dist-info}/top_level.txt +0 -0
agno/workflow/workflow.py
CHANGED
|
@@ -170,6 +170,11 @@ class Workflow:
|
|
|
170
170
|
# This helps us improve the Agent and provide better support
|
|
171
171
|
telemetry: bool = True
|
|
172
172
|
|
|
173
|
+
# Add this flag to control if the workflow should add history to the steps
|
|
174
|
+
add_workflow_history_to_steps: bool = False
|
|
175
|
+
# Number of historical runs to include in the messages
|
|
176
|
+
num_history_runs: int = 3
|
|
177
|
+
|
|
173
178
|
def __init__(
|
|
174
179
|
self,
|
|
175
180
|
id: Optional[str] = None,
|
|
@@ -191,6 +196,8 @@ class Workflow:
|
|
|
191
196
|
metadata: Optional[Dict[str, Any]] = None,
|
|
192
197
|
cache_session: bool = False,
|
|
193
198
|
telemetry: bool = True,
|
|
199
|
+
add_workflow_history_to_steps: bool = False,
|
|
200
|
+
num_history_runs: int = 3,
|
|
194
201
|
):
|
|
195
202
|
self.id = id
|
|
196
203
|
self.name = name
|
|
@@ -211,7 +218,8 @@ class Workflow:
|
|
|
211
218
|
self.cache_session = cache_session
|
|
212
219
|
self.db = db
|
|
213
220
|
self.telemetry = telemetry
|
|
214
|
-
|
|
221
|
+
self.add_workflow_history_to_steps = add_workflow_history_to_steps
|
|
222
|
+
self.num_history_runs = num_history_runs
|
|
215
223
|
self._workflow_session: Optional[WorkflowSession] = None
|
|
216
224
|
|
|
217
225
|
def set_id(self) -> None:
|
|
@@ -707,6 +715,34 @@ class Workflow:
|
|
|
707
715
|
|
|
708
716
|
return event
|
|
709
717
|
|
|
718
|
+
def _enrich_event_with_workflow_context(
|
|
719
|
+
self,
|
|
720
|
+
event: Any,
|
|
721
|
+
workflow_run_response: WorkflowRunOutput,
|
|
722
|
+
step_index: Optional[Union[int, tuple]] = None,
|
|
723
|
+
step: Optional[Any] = None,
|
|
724
|
+
) -> Any:
|
|
725
|
+
"""Enrich any event with workflow context information for frontend tracking"""
|
|
726
|
+
|
|
727
|
+
step_id = getattr(step, "step_id", None) if step else None
|
|
728
|
+
step_name = getattr(step, "name", None) if step else None
|
|
729
|
+
|
|
730
|
+
if hasattr(event, "workflow_id"):
|
|
731
|
+
event.workflow_id = workflow_run_response.workflow_id
|
|
732
|
+
if hasattr(event, "workflow_run_id"):
|
|
733
|
+
event.workflow_run_id = workflow_run_response.run_id
|
|
734
|
+
if hasattr(event, "step_id") and step_id:
|
|
735
|
+
event.step_id = step_id
|
|
736
|
+
if hasattr(event, "step_name") and step_name is not None:
|
|
737
|
+
if event.step_name is None:
|
|
738
|
+
event.step_name = step_name
|
|
739
|
+
# Only set step_index if it's not already set (preserve parallel.py's tuples)
|
|
740
|
+
if hasattr(event, "step_index") and step_index is not None:
|
|
741
|
+
if event.step_index is None:
|
|
742
|
+
event.step_index = step_index
|
|
743
|
+
|
|
744
|
+
return event
|
|
745
|
+
|
|
710
746
|
def _transform_step_output_to_event(
|
|
711
747
|
self, step_output: StepOutput, workflow_run_response: WorkflowRunOutput, step_index: Optional[int] = None
|
|
712
748
|
) -> StepOutputEvent:
|
|
@@ -875,9 +911,7 @@ class Workflow:
|
|
|
875
911
|
return func(**call_kwargs)
|
|
876
912
|
except TypeError as e:
|
|
877
913
|
# If signature inspection fails, fall back to original method
|
|
878
|
-
logger.error(
|
|
879
|
-
f"Function signature inspection failed: {e}. Falling back to original calling convention."
|
|
880
|
-
)
|
|
914
|
+
logger.error(f"Function signature inspection failed: {e}. Falling back to original calling convention.")
|
|
881
915
|
return func(**kwargs)
|
|
882
916
|
|
|
883
917
|
def _execute(
|
|
@@ -892,7 +926,8 @@ class Workflow:
|
|
|
892
926
|
from inspect import isasyncgenfunction, iscoroutinefunction, isgeneratorfunction
|
|
893
927
|
|
|
894
928
|
workflow_run_response.status = RunStatus.running
|
|
895
|
-
|
|
929
|
+
if workflow_run_response.run_id:
|
|
930
|
+
register_run(workflow_run_response.run_id) # type: ignore
|
|
896
931
|
|
|
897
932
|
if callable(self.steps):
|
|
898
933
|
if iscoroutinefunction(self.steps) or isasyncgenfunction(self.steps):
|
|
@@ -953,6 +988,11 @@ class Workflow:
|
|
|
953
988
|
workflow_run_response=workflow_run_response,
|
|
954
989
|
session_state=session_state,
|
|
955
990
|
store_executor_outputs=self.store_executor_outputs,
|
|
991
|
+
workflow_session=session,
|
|
992
|
+
add_workflow_history_to_steps=self.add_workflow_history_to_steps
|
|
993
|
+
if self.add_workflow_history_to_steps
|
|
994
|
+
else None,
|
|
995
|
+
num_history_runs=self.num_history_runs,
|
|
956
996
|
)
|
|
957
997
|
|
|
958
998
|
# Check for cancellation after step execution
|
|
@@ -1122,6 +1162,11 @@ class Workflow:
|
|
|
1122
1162
|
session_state=session_state,
|
|
1123
1163
|
step_index=i,
|
|
1124
1164
|
store_executor_outputs=self.store_executor_outputs,
|
|
1165
|
+
workflow_session=session,
|
|
1166
|
+
add_workflow_history_to_steps=self.add_workflow_history_to_steps
|
|
1167
|
+
if self.add_workflow_history_to_steps
|
|
1168
|
+
else None,
|
|
1169
|
+
num_history_runs=self.num_history_runs,
|
|
1125
1170
|
):
|
|
1126
1171
|
raise_if_cancelled(workflow_run_response.run_id) # type: ignore
|
|
1127
1172
|
# Handle events
|
|
@@ -1172,11 +1217,18 @@ class Workflow:
|
|
|
1172
1217
|
yield step_output_event
|
|
1173
1218
|
|
|
1174
1219
|
elif isinstance(event, WorkflowRunOutputEvent): # type: ignore
|
|
1175
|
-
|
|
1220
|
+
# Enrich event with workflow context before yielding
|
|
1221
|
+
enriched_event = self._enrich_event_with_workflow_context(
|
|
1222
|
+
event, workflow_run_response, step_index=i, step=step
|
|
1223
|
+
)
|
|
1224
|
+
yield self._handle_event(enriched_event, workflow_run_response) # type: ignore
|
|
1176
1225
|
|
|
1177
1226
|
else:
|
|
1178
|
-
#
|
|
1179
|
-
|
|
1227
|
+
# Enrich other events with workflow context before yielding
|
|
1228
|
+
enriched_event = self._enrich_event_with_workflow_context(
|
|
1229
|
+
event, workflow_run_response, step_index=i, step=step
|
|
1230
|
+
)
|
|
1231
|
+
yield self._handle_event(enriched_event, workflow_run_response) # type: ignore
|
|
1180
1232
|
|
|
1181
1233
|
# Break out of main step loop if early termination was requested
|
|
1182
1234
|
if "early_termination" in locals() and early_termination:
|
|
@@ -1346,7 +1398,8 @@ class Workflow:
|
|
|
1346
1398
|
workflow_run_response.status = RunStatus.running
|
|
1347
1399
|
|
|
1348
1400
|
# Register run for cancellation tracking
|
|
1349
|
-
|
|
1401
|
+
if workflow_run_response.run_id:
|
|
1402
|
+
register_run(workflow_run_response.run_id) # type: ignore
|
|
1350
1403
|
|
|
1351
1404
|
if callable(self.steps):
|
|
1352
1405
|
# Execute the workflow with the custom executor
|
|
@@ -1415,6 +1468,11 @@ class Workflow:
|
|
|
1415
1468
|
workflow_run_response=workflow_run_response,
|
|
1416
1469
|
session_state=session_state,
|
|
1417
1470
|
store_executor_outputs=self.store_executor_outputs,
|
|
1471
|
+
workflow_session=session,
|
|
1472
|
+
add_workflow_history_to_steps=self.add_workflow_history_to_steps
|
|
1473
|
+
if self.add_workflow_history_to_steps
|
|
1474
|
+
else None,
|
|
1475
|
+
num_history_runs=self.num_history_runs,
|
|
1418
1476
|
)
|
|
1419
1477
|
|
|
1420
1478
|
# Check for cancellation after step execution
|
|
@@ -1507,6 +1565,10 @@ class Workflow:
|
|
|
1507
1565
|
|
|
1508
1566
|
workflow_run_response.status = RunStatus.running
|
|
1509
1567
|
|
|
1568
|
+
# Register run for cancellation tracking
|
|
1569
|
+
if workflow_run_response.run_id:
|
|
1570
|
+
register_run(workflow_run_response.run_id)
|
|
1571
|
+
|
|
1510
1572
|
workflow_started_event = WorkflowStartedEvent(
|
|
1511
1573
|
run_id=workflow_run_response.run_id or "",
|
|
1512
1574
|
workflow_name=workflow_run_response.workflow_name,
|
|
@@ -1585,6 +1647,11 @@ class Workflow:
|
|
|
1585
1647
|
session_state=session_state,
|
|
1586
1648
|
step_index=i,
|
|
1587
1649
|
store_executor_outputs=self.store_executor_outputs,
|
|
1650
|
+
workflow_session=session,
|
|
1651
|
+
add_workflow_history_to_steps=self.add_workflow_history_to_steps
|
|
1652
|
+
if self.add_workflow_history_to_steps
|
|
1653
|
+
else None,
|
|
1654
|
+
num_history_runs=self.num_history_runs,
|
|
1588
1655
|
):
|
|
1589
1656
|
if workflow_run_response.run_id:
|
|
1590
1657
|
raise_if_cancelled(workflow_run_response.run_id)
|
|
@@ -1634,11 +1701,22 @@ class Workflow:
|
|
|
1634
1701
|
yield step_output_event
|
|
1635
1702
|
|
|
1636
1703
|
elif isinstance(event, WorkflowRunOutputEvent): # type: ignore
|
|
1637
|
-
|
|
1704
|
+
# Enrich event with workflow context before yielding
|
|
1705
|
+
enriched_event = self._enrich_event_with_workflow_context(
|
|
1706
|
+
event, workflow_run_response, step_index=i, step=step
|
|
1707
|
+
)
|
|
1708
|
+
yield self._handle_event(
|
|
1709
|
+
enriched_event, workflow_run_response, websocket_handler=websocket_handler
|
|
1710
|
+
) # type: ignore
|
|
1638
1711
|
|
|
1639
1712
|
else:
|
|
1640
|
-
#
|
|
1641
|
-
|
|
1713
|
+
# Enrich other events with workflow context before yielding
|
|
1714
|
+
enriched_event = self._enrich_event_with_workflow_context(
|
|
1715
|
+
event, workflow_run_response, step_index=i, step=step
|
|
1716
|
+
)
|
|
1717
|
+
yield self._handle_event(
|
|
1718
|
+
enriched_event, workflow_run_response, websocket_handler=websocket_handler
|
|
1719
|
+
) # type: ignore
|
|
1642
1720
|
|
|
1643
1721
|
# Break out of main step loop if early termination was requested
|
|
1644
1722
|
if "early_termination" in locals() and early_termination:
|
|
@@ -2632,3 +2710,147 @@ class Workflow:
|
|
|
2632
2710
|
)
|
|
2633
2711
|
except Exception as e:
|
|
2634
2712
|
log_debug(f"Could not create Workflow run telemetry event: {e}")
|
|
2713
|
+
|
|
2714
|
+
def cli_app(
|
|
2715
|
+
self,
|
|
2716
|
+
input: Optional[str] = None,
|
|
2717
|
+
session_id: Optional[str] = None,
|
|
2718
|
+
user_id: Optional[str] = None,
|
|
2719
|
+
user: str = "User",
|
|
2720
|
+
emoji: str = ":technologist:",
|
|
2721
|
+
stream: Optional[bool] = None,
|
|
2722
|
+
stream_intermediate_steps: Optional[bool] = None,
|
|
2723
|
+
markdown: bool = True,
|
|
2724
|
+
show_time: bool = True,
|
|
2725
|
+
show_step_details: bool = True,
|
|
2726
|
+
exit_on: Optional[List[str]] = None,
|
|
2727
|
+
**kwargs: Any,
|
|
2728
|
+
) -> None:
|
|
2729
|
+
"""
|
|
2730
|
+
Run an interactive command-line interface to interact with the workflow.
|
|
2731
|
+
|
|
2732
|
+
This method creates a CLI interface that allows users to interact with the workflow
|
|
2733
|
+
either by providing a single input or through continuous interactive prompts.
|
|
2734
|
+
|
|
2735
|
+
Arguments:
|
|
2736
|
+
input: Optional initial input to process before starting interactive mode.
|
|
2737
|
+
session_id: Optional session identifier for maintaining conversation context.
|
|
2738
|
+
user_id: Optional user identifier for tracking user-specific data.
|
|
2739
|
+
user: Display name for the user in the CLI prompt. Defaults to "User".
|
|
2740
|
+
emoji: Emoji to display next to the user name in prompts. Defaults to ":technologist:".
|
|
2741
|
+
stream: Whether to stream the workflow response. If None, uses workflow default.
|
|
2742
|
+
stream_intermediate_steps: Whether to stream intermediate step outputs. If None, uses workflow default.
|
|
2743
|
+
markdown: Whether to render output as markdown. Defaults to True.
|
|
2744
|
+
show_time: Whether to display timestamps in the output. Defaults to True.
|
|
2745
|
+
show_step_details: Whether to show detailed step information. Defaults to True.
|
|
2746
|
+
exit_on: List of commands that will exit the CLI. Defaults to ["exit", "quit", "bye", "stop"].
|
|
2747
|
+
**kwargs: Additional keyword arguments passed to the workflow's print_response method.
|
|
2748
|
+
|
|
2749
|
+
Returns:
|
|
2750
|
+
None: This method runs interactively and does not return a value.
|
|
2751
|
+
"""
|
|
2752
|
+
|
|
2753
|
+
from rich.prompt import Prompt
|
|
2754
|
+
|
|
2755
|
+
if input:
|
|
2756
|
+
self.print_response(
|
|
2757
|
+
input=input,
|
|
2758
|
+
stream=stream,
|
|
2759
|
+
stream_intermediate_steps=stream_intermediate_steps,
|
|
2760
|
+
markdown=markdown,
|
|
2761
|
+
show_time=show_time,
|
|
2762
|
+
show_step_details=show_step_details,
|
|
2763
|
+
user_id=user_id,
|
|
2764
|
+
session_id=session_id,
|
|
2765
|
+
**kwargs,
|
|
2766
|
+
)
|
|
2767
|
+
|
|
2768
|
+
_exit_on = exit_on or ["exit", "quit", "bye", "stop"]
|
|
2769
|
+
while True:
|
|
2770
|
+
message = Prompt.ask(f"[bold] {emoji} {user} [/bold]")
|
|
2771
|
+
if message in _exit_on:
|
|
2772
|
+
break
|
|
2773
|
+
|
|
2774
|
+
self.print_response(
|
|
2775
|
+
input=message,
|
|
2776
|
+
stream=stream,
|
|
2777
|
+
stream_intermediate_steps=stream_intermediate_steps,
|
|
2778
|
+
markdown=markdown,
|
|
2779
|
+
show_time=show_time,
|
|
2780
|
+
show_step_details=show_step_details,
|
|
2781
|
+
user_id=user_id,
|
|
2782
|
+
session_id=session_id,
|
|
2783
|
+
**kwargs,
|
|
2784
|
+
)
|
|
2785
|
+
|
|
2786
|
+
async def acli_app(
|
|
2787
|
+
self,
|
|
2788
|
+
input: Optional[str] = None,
|
|
2789
|
+
session_id: Optional[str] = None,
|
|
2790
|
+
user_id: Optional[str] = None,
|
|
2791
|
+
user: str = "User",
|
|
2792
|
+
emoji: str = ":technologist:",
|
|
2793
|
+
stream: Optional[bool] = None,
|
|
2794
|
+
stream_intermediate_steps: Optional[bool] = None,
|
|
2795
|
+
markdown: bool = True,
|
|
2796
|
+
show_time: bool = True,
|
|
2797
|
+
show_step_details: bool = True,
|
|
2798
|
+
exit_on: Optional[List[str]] = None,
|
|
2799
|
+
**kwargs: Any,
|
|
2800
|
+
) -> None:
|
|
2801
|
+
"""
|
|
2802
|
+
Run an interactive command-line interface to interact with the workflow.
|
|
2803
|
+
|
|
2804
|
+
This method creates a CLI interface that allows users to interact with the workflow
|
|
2805
|
+
either by providing a single input or through continuous interactive prompts.
|
|
2806
|
+
|
|
2807
|
+
Arguments:
|
|
2808
|
+
input: Optional initial input to process before starting interactive mode.
|
|
2809
|
+
session_id: Optional session identifier for maintaining conversation context.
|
|
2810
|
+
user_id: Optional user identifier for tracking user-specific data.
|
|
2811
|
+
user: Display name for the user in the CLI prompt. Defaults to "User".
|
|
2812
|
+
emoji: Emoji to display next to the user name in prompts. Defaults to ":technologist:".
|
|
2813
|
+
stream: Whether to stream the workflow response. If None, uses workflow default.
|
|
2814
|
+
stream_intermediate_steps: Whether to stream intermediate step outputs. If None, uses workflow default.
|
|
2815
|
+
markdown: Whether to render output as markdown. Defaults to True.
|
|
2816
|
+
show_time: Whether to display timestamps in the output. Defaults to True.
|
|
2817
|
+
show_step_details: Whether to show detailed step information. Defaults to True.
|
|
2818
|
+
exit_on: List of commands that will exit the CLI. Defaults to ["exit", "quit", "bye", "stop"].
|
|
2819
|
+
**kwargs: Additional keyword arguments passed to the workflow's print_response method.
|
|
2820
|
+
|
|
2821
|
+
Returns:
|
|
2822
|
+
None: This method runs interactively and does not return a value.
|
|
2823
|
+
"""
|
|
2824
|
+
|
|
2825
|
+
from rich.prompt import Prompt
|
|
2826
|
+
|
|
2827
|
+
if input:
|
|
2828
|
+
await self.aprint_response(
|
|
2829
|
+
input=input,
|
|
2830
|
+
stream=stream,
|
|
2831
|
+
stream_intermediate_steps=stream_intermediate_steps,
|
|
2832
|
+
markdown=markdown,
|
|
2833
|
+
show_time=show_time,
|
|
2834
|
+
show_step_details=show_step_details,
|
|
2835
|
+
user_id=user_id,
|
|
2836
|
+
session_id=session_id,
|
|
2837
|
+
**kwargs,
|
|
2838
|
+
)
|
|
2839
|
+
|
|
2840
|
+
_exit_on = exit_on or ["exit", "quit", "bye", "stop"]
|
|
2841
|
+
while True:
|
|
2842
|
+
message = Prompt.ask(f"[bold] {emoji} {user} [/bold]")
|
|
2843
|
+
if message in _exit_on:
|
|
2844
|
+
break
|
|
2845
|
+
|
|
2846
|
+
await self.aprint_response(
|
|
2847
|
+
input=message,
|
|
2848
|
+
stream=stream,
|
|
2849
|
+
stream_intermediate_steps=stream_intermediate_steps,
|
|
2850
|
+
markdown=markdown,
|
|
2851
|
+
show_time=show_time,
|
|
2852
|
+
show_step_details=show_step_details,
|
|
2853
|
+
user_id=user_id,
|
|
2854
|
+
session_id=session_id,
|
|
2855
|
+
**kwargs,
|
|
2856
|
+
)
|
|
@@ -4,7 +4,7 @@ agno/exceptions.py,sha256=-JelI3vzaHTWySKM1LqtLoH1Otm841QqAwsiboztG14,4748
|
|
|
4
4
|
agno/media.py,sha256=eTfYb_pwhX_PCIVPSrW4VYRqmoxKABEF1aZClrVvQ30,16500
|
|
5
5
|
agno/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
agno/agent/__init__.py,sha256=s7S3FgsjZxuaabzi8L5n4aSH8IZAiZ7XaNNcySGR-EQ,1051
|
|
7
|
-
agno/agent/agent.py,sha256=
|
|
7
|
+
agno/agent/agent.py,sha256=IpveWi4IXf3jh8mWbUxVSLOY-pwEOe0waw8ebpafu34,345232
|
|
8
8
|
agno/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
agno/api/agent.py,sha256=fKlQ62E_C9Rjd7Zus3Gs3R1RG-IhzFV-ICpkb6SLqYc,932
|
|
10
10
|
agno/api/api.py,sha256=Z7iWbrjheJcGLeeDYrtTCWiKTVqjH0uJI35UNWOtAXw,973
|
|
@@ -31,18 +31,18 @@ agno/db/__init__.py,sha256=bfd_tpKsIKCjZosnFqID26VoWqy88v8gzkf9kLHToY4,625
|
|
|
31
31
|
agno/db/base.py,sha256=fGNdKHixsHjfVYQo3NxTiDQBFCvOxChUJynAQmih7NY,8670
|
|
32
32
|
agno/db/utils.py,sha256=eL0prfDrTEfOwNlOZeoZE4pu59bNJET22uh8wgzz-cw,4879
|
|
33
33
|
agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
|
|
34
|
-
agno/db/dynamo/dynamo.py,sha256=
|
|
35
|
-
agno/db/dynamo/schemas.py,sha256=
|
|
36
|
-
agno/db/dynamo/utils.py,sha256=
|
|
34
|
+
agno/db/dynamo/dynamo.py,sha256=jVV65rG1b5bAf03yfPkRBfuXMLl4Go9Q3u9NM7VBwtc,71546
|
|
35
|
+
agno/db/dynamo/schemas.py,sha256=vCB9-BN255muGpw5wt-5aolm8rHO5QI2SEfwfSc2HeY,11079
|
|
36
|
+
agno/db/dynamo/utils.py,sha256=WnFKxZJtnfyJ6rdU2oUCofUyFqjlo2_hB9Q5fkez8V4,25058
|
|
37
37
|
agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
|
|
38
|
-
agno/db/firestore/firestore.py,sha256=
|
|
38
|
+
agno/db/firestore/firestore.py,sha256=Z548061P68EeyH7H8RexEgn6i2W6DLSjDO9dz3A7OZA,61505
|
|
39
39
|
agno/db/firestore/schemas.py,sha256=k8YuG_PC_Hd3WCLaDkk4bAJP8BmAWmrt6VXuG1wr2Ak,4132
|
|
40
40
|
agno/db/firestore/utils.py,sha256=FVR1XQjnsZsG3IrFyvTOHICd0lgD99aajUJ-UAvVEOg,10332
|
|
41
41
|
agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
|
|
42
|
-
agno/db/gcs_json/gcs_json_db.py,sha256=
|
|
42
|
+
agno/db/gcs_json/gcs_json_db.py,sha256=jVj8i70XDO7O1E8wIr_xAeC1Shng_vpOzZui--8eMFQ,47007
|
|
43
43
|
agno/db/gcs_json/utils.py,sha256=Ist4HuQoYvC2BKr01oTxDp9mfMirz1UBBDKElbXg2bg,6610
|
|
44
44
|
agno/db/in_memory/__init__.py,sha256=OvR_FONhOh9PmcRfUA_6gvplZT5UGIBAgVKqVg6SWTA,80
|
|
45
|
-
agno/db/in_memory/in_memory_db.py,sha256=
|
|
45
|
+
agno/db/in_memory/in_memory_db.py,sha256=MwHk7EcKIHpOFXBJSeb1z6tCSyjUKW3zZpUmyHqWTpM,41285
|
|
46
46
|
agno/db/in_memory/utils.py,sha256=X02wny18w5uvGE3caokPbCQTG6t7OErWNPkK3Umru3s,5780
|
|
47
47
|
agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
|
|
48
48
|
agno/db/json/json_db.py,sha256=WkPhdkvDKYOc6Q-QUOlhV1G9-VPo0YQzpU1qrmPHMis,47585
|
|
@@ -112,7 +112,7 @@ agno/knowledge/embedder/aws_bedrock.py,sha256=tqWp-BFnZvyOSusuN1OZ-TXtt6nZWFzZu6
|
|
|
112
112
|
agno/knowledge/embedder/azure_openai.py,sha256=TTIWlrPhhPsjspbecmgKoBlTRyKlUTzurEF1QCehQCs,8522
|
|
113
113
|
agno/knowledge/embedder/base.py,sha256=PUyo0zzk1TlImKsmWORLhc74rNSEKIQcMcjP1sE7Pyk,746
|
|
114
114
|
agno/knowledge/embedder/cohere.py,sha256=riT-Q7sGaG-BgkYtaq9ONXLuoUt99TncOWLzfOSWwtE,14499
|
|
115
|
-
agno/knowledge/embedder/fastembed.py,sha256=
|
|
115
|
+
agno/knowledge/embedder/fastembed.py,sha256=yE3eBXusFhDugGbhAUfGZn2IDWw5_bwVKeDEuNg9wH4,2106
|
|
116
116
|
agno/knowledge/embedder/fireworks.py,sha256=Om3RQ95FCtTYdn52vrJfnZomkVHpAI2HaW2fxhsk0EM,387
|
|
117
117
|
agno/knowledge/embedder/google.py,sha256=i4H8RJ-baWAU_QObCvupuuGDJobdUNfhPy3rxzCNIQA,10945
|
|
118
118
|
agno/knowledge/embedder/huggingface.py,sha256=eQEVHb6jh_OiR985JR88lZvtrtilI-NcQRgCliVucCo,3572
|
|
@@ -163,7 +163,7 @@ agno/models/aimlapi/aimlapi.py,sha256=9Qh-b8HvFSvmPP3VBNGT00qy9izHLMWgR-KDQCE5CM
|
|
|
163
163
|
agno/models/anthropic/__init__.py,sha256=nbReX3p17JCwfrMDR9hR7-OaEFZm80I7dng93dl-Fhw,77
|
|
164
164
|
agno/models/anthropic/claude.py,sha256=7chDZrLdh_ocFLOy3qHwOY_pfZrJ-EWrB3otLv97fNU,26488
|
|
165
165
|
agno/models/aws/__init__.py,sha256=TbcwQwv9A7KjqBM5RQBR8x46GvyyCxbBCjwkpjfVGKE,352
|
|
166
|
-
agno/models/aws/bedrock.py,sha256=
|
|
166
|
+
agno/models/aws/bedrock.py,sha256=ScZcGwOMh-N0DfArXtDVzKy467QPAN0OS8llBNAc8cQ,28880
|
|
167
167
|
agno/models/aws/claude.py,sha256=sL47z9fM3jxGbARkr0mlAVYEKKX854J3u-Qeb5gIADo,14746
|
|
168
168
|
agno/models/azure/__init__.py,sha256=EoFdJHjayvmv_VOmaW9cJguwA1K5OFS_nFeazyn0B2w,605
|
|
169
169
|
agno/models/azure/ai_foundry.py,sha256=V75lk4pH_RVFzVhWYz9-ZSA3dcaQe2SpRF1lrAm_agw,18673
|
|
@@ -220,7 +220,7 @@ agno/models/openai/chat.py,sha256=ZdFj0xeCEGI1_UR_q_IsHl_KqoQ076g8LG5g32zJRYc,37
|
|
|
220
220
|
agno/models/openai/like.py,sha256=wmw9PfAVqluBs4MMY73dgjelKn1yl5JDKyCRvaNFjFw,745
|
|
221
221
|
agno/models/openai/responses.py,sha256=HyrfTZF8AkjdxktKhos9Riuos03nkhSvreeQGAyn81A,47116
|
|
222
222
|
agno/models/openrouter/__init__.py,sha256=ZpZhNyy_EGSXp58uC9e2iyjnxBctql7GaY8rUG-599I,90
|
|
223
|
-
agno/models/openrouter/openrouter.py,sha256=
|
|
223
|
+
agno/models/openrouter/openrouter.py,sha256=YXjTHcETz4mn-exBr0GyAbP7_XeQMJkF7Pdf2XBRdFw,2595
|
|
224
224
|
agno/models/perplexity/__init__.py,sha256=JNmOElDLwcZ9_Lk5owkEdgwmAhaH3YJ-VJqOI8rgp5c,90
|
|
225
225
|
agno/models/perplexity/perplexity.py,sha256=d17a9pbSrTIM2PIwCPq8_QrgcNmv1klMsS8rWnEa1fI,6988
|
|
226
226
|
agno/models/portkey/__init__.py,sha256=CjGmltOuDlYfuJgpYHmfRkKiIS9W9MH4oYaGKaNNZeM,71
|
|
@@ -235,19 +235,21 @@ agno/models/together/__init__.py,sha256=y6-pgHLEInpJtffjLGHkUWTDpoQNnMlKHa4fstyH
|
|
|
235
235
|
agno/models/together/together.py,sha256=27e-0IqlsFYh0d40XiOjx18GjOqytFI7vwcnCk8JApg,950
|
|
236
236
|
agno/models/vercel/__init__.py,sha256=BYQD23dB-dmIXm8iy4S6yxXRW8xg24E9TLOgwckH674,55
|
|
237
237
|
agno/models/vercel/v0.py,sha256=48Na0ZFBnRw3hUFUqO5xMO78jzOYnBj-o5kLLg4F188,826
|
|
238
|
+
agno/models/vertexai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
239
|
+
agno/models/vertexai/claude.py,sha256=7dw2oF4rQ7-ZncsSTxuXVVtUWpQ1ijSGZkWPFredepM,2454
|
|
238
240
|
agno/models/vllm/__init__.py,sha256=G8cpCZtu4zJvMGud5eSYMMxGBpNTe9jM4W-p0XUeCGE,59
|
|
239
241
|
agno/models/vllm/vllm.py,sha256=UtiiSvUR4pG_1CzuhY5MWduRgzM2hGVTakKJ6ZBdQmo,2730
|
|
240
242
|
agno/models/xai/__init__.py,sha256=ukcCxnCHxTtkJNA2bAMTX4MhCv1wJcbiq8ZIfYczIxs,55
|
|
241
243
|
agno/models/xai/xai.py,sha256=jA6_39tfapkjkHKdzbKaNq1t9qIvO1IaZY1hQqEmFVs,4181
|
|
242
244
|
agno/os/__init__.py,sha256=h8oQu7vhD5RZf09jkyM_Kt1Kdq_d5kFB9gJju8QPwcY,55
|
|
243
|
-
agno/os/app.py,sha256=
|
|
245
|
+
agno/os/app.py,sha256=kTUhb-NaUyX5UP-A2rzaAD1xntd3TXwl2sY3qWGQIcg,26540
|
|
244
246
|
agno/os/auth.py,sha256=FyBtAKWtg-qSunCas5m5pK1dVEmikOSZvcCp5r25tTA,1844
|
|
245
247
|
agno/os/config.py,sha256=u4R9yazQXIcKjR3QzEIZw_XAe_OHp3xn0ff7SVkj2jA,2893
|
|
246
|
-
agno/os/mcp.py,sha256=
|
|
248
|
+
agno/os/mcp.py,sha256=BQk3EXCyU3-KHJn7829aOs7txV9TE3p7bwPlYJ7iFGc,8125
|
|
247
249
|
agno/os/router.py,sha256=-w_VXQm2QscNAAeDehAgQ9CStNpPr06qhPmYYhiZslM,69930
|
|
248
|
-
agno/os/schema.py,sha256=
|
|
250
|
+
agno/os/schema.py,sha256=ln1kiOW6gNhPumCEyidLhecWKZhbIOJlfbEK-5J1Yu8,38362
|
|
249
251
|
agno/os/settings.py,sha256=Cn5_8lZI8Vx1UaUYqs9h6Qp4IMDFn4f3c35uppiaMy4,1343
|
|
250
|
-
agno/os/utils.py,sha256=
|
|
252
|
+
agno/os/utils.py,sha256=pS_fWQT7SJeYPAia5e8Dj8YjtIXPD-fAHnnQk23Merg,17907
|
|
251
253
|
agno/os/interfaces/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
252
254
|
agno/os/interfaces/base.py,sha256=vXkr1tRjWHTcmBlQFzvQjqURLhObmFtUAx82uij_j48,542
|
|
253
255
|
agno/os/interfaces/a2a/__init__.py,sha256=Fs7--dx9drvtVS9QjsCCm0P7c-hJ7TzU8gNwKTQsZDA,62
|
|
@@ -257,7 +259,7 @@ agno/os/interfaces/a2a/utils.py,sha256=rTn9x0UGbX53EiAsljf87PmzYwLuvqaobUWpCn35u
|
|
|
257
259
|
agno/os/interfaces/agui/__init__.py,sha256=1zrGICk4roXUINwSFZfqH6sBsbHmD5KjGYVJMGg4fKQ,66
|
|
258
260
|
agno/os/interfaces/agui/agui.py,sha256=PKGoDDbtQFmEC0zRwZmsjS_5t9bJWJ-ZGwxEQsu9P-U,1415
|
|
259
261
|
agno/os/interfaces/agui/router.py,sha256=TBVADofGBw16x0wSF-aOEfNrebNtoX_WzHENcKsnu6s,4835
|
|
260
|
-
agno/os/interfaces/agui/utils.py,sha256=
|
|
262
|
+
agno/os/interfaces/agui/utils.py,sha256=sPjguuHCrrWS_V22o73fAhl6gX0Y2uXjN0gRRBQa3r8,19372
|
|
261
263
|
agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
|
|
262
264
|
agno/os/interfaces/slack/router.py,sha256=RuD0Y0YOdlyqaj37W5outpM7dHTlEX6R63V4IrETSYc,5710
|
|
263
265
|
agno/os/interfaces/slack/security.py,sha256=nMbW_0g-G_DEMbCQOD8C3PYrRPIpB2cyM6P-xS6GHYk,917
|
|
@@ -306,9 +308,9 @@ agno/session/__init__.py,sha256=p6eqzWcLSHiMex2yZvkwv2yrFUNdGs21TGMS49xrEC4,376
|
|
|
306
308
|
agno/session/agent.py,sha256=vut3IwCivUu0vvuht_1c3rUhW61NZee6whxDQUsEkUM,9756
|
|
307
309
|
agno/session/summary.py,sha256=THBbzE48V81p4dKUX2W8OvbpsNO5dI6BdtqDyjfcVqw,8433
|
|
308
310
|
agno/session/team.py,sha256=0lS-9ljtG17iyC0n8sq_7aEy9MZsdfMf8VgObqJ_3tg,10384
|
|
309
|
-
agno/session/workflow.py,sha256
|
|
311
|
+
agno/session/workflow.py,sha256=-wvyKB_MmWCvyxDl8pzp7Bf9lBLW9xu3SGHk-4lyxvA,7421
|
|
310
312
|
agno/team/__init__.py,sha256=toHidBOo5M3n_TIVtIKHgcDbLL9HR-_U-YQYuIt_XtE,847
|
|
311
|
-
agno/team/team.py,sha256=
|
|
313
|
+
agno/team/team.py,sha256=PerwVgXr95YrWQBWljxntCbPuH5i0uEf5JnPm0p8qt8,334992
|
|
312
314
|
agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
|
|
313
315
|
agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
|
|
314
316
|
agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
|
|
@@ -344,15 +346,16 @@ agno/tools/email.py,sha256=YmqNngDMDfJn-TCrxGV9IxRh2xcLmxQh7NOuuKTyUwU,2359
|
|
|
344
346
|
agno/tools/evm.py,sha256=lX8KhpfHBcYANuNLmNI7EmwrnkE1anXjWGsGuM3_hRM,5371
|
|
345
347
|
agno/tools/exa.py,sha256=vwTcNo8iOh_0QDSV1dpgf7qtKpRW4cm9KPRIN3GcLWw,16844
|
|
346
348
|
agno/tools/fal.py,sha256=49rgpgfpk-aKUs18x8vDH1Wa4jNOPKN3iczfqWMo8xw,4633
|
|
347
|
-
agno/tools/file.py,sha256=
|
|
349
|
+
agno/tools/file.py,sha256=SVikIqRyxGW7byyqk0GSuz4KCUZGxZEsE_EK8ag3aak,4406
|
|
348
350
|
agno/tools/file_generation.py,sha256=OMRG1CkpnZTCMxnKXGHfkfdXUYEur9jsdyCNxujWHS4,13896
|
|
349
351
|
agno/tools/financial_datasets.py,sha256=NiXwyiYIFCawI8rR7JLJNIfwoQlranUeCcABHKhLHfw,9190
|
|
350
352
|
agno/tools/firecrawl.py,sha256=sMV6XRaSIyTSkTJbtMdIQPTsN11ozJ78YDDi04kBvQE,5341
|
|
351
|
-
agno/tools/function.py,sha256=
|
|
353
|
+
agno/tools/function.py,sha256=QDbGgK8BYvFHuPRnVxMb-bXCao8z1hvkwBm8eaKe4m0,45671
|
|
352
354
|
agno/tools/giphy.py,sha256=_wOCWVnMdFByE9Yoz4Pf2MoKxSjkUTiPJZ928_BNe2M,3070
|
|
353
355
|
agno/tools/github.py,sha256=wct6P00YzF3zgWoV2c5aHeXX_2dgb9LqRwJAboi6QXw,70286
|
|
354
356
|
agno/tools/gmail.py,sha256=MlLlEvxHly_2oKAZaKxXDmoHLTbWDSXcjOASGt7RpY8,28067
|
|
355
357
|
agno/tools/google_bigquery.py,sha256=j0c14CgGK8KvD7eEirsdAx7RSwcfMheugn84ySq6miU,4483
|
|
358
|
+
agno/tools/google_drive.py,sha256=dxGr_NhMsqFsr_tR3w4MgLXm7_nlCTI43sCmKw60N_4,11159
|
|
356
359
|
agno/tools/google_maps.py,sha256=AqPEIt4u6B2kQtzOnL5PH3RXoefCfjT_Uvm3coAqzaY,9513
|
|
357
360
|
agno/tools/googlecalendar.py,sha256=s8BPKvDZGeLD2idlQG-vqDqVpza6PupF5AzAElnAK_M,27457
|
|
358
361
|
agno/tools/googlesearch.py,sha256=xRuaEqn7N6JIQC6z9jFuA0Kdtoe5MafGqRMtZ8jW2AQ,3566
|
|
@@ -450,7 +453,7 @@ agno/utils/location.py,sha256=VhXIwSWdr7L4DEJoUeVI92Y-rJ32NUcYzFRnzLgX-es,658
|
|
|
450
453
|
agno/utils/log.py,sha256=Ycg4_MEkXyOz25OkY272JHWxIZP1nB4OScwJ-r8BMGk,7791
|
|
451
454
|
agno/utils/mcp.py,sha256=v5juISDNtdQaUK1DmJnAAGuNiSp0491TDwErgjEdhF8,5113
|
|
452
455
|
agno/utils/media.py,sha256=Lk0sbSHmoKlQi3hLKorowCKGF74xdeMfqIj6Gt21Zek,5891
|
|
453
|
-
agno/utils/merge_dict.py,sha256=
|
|
456
|
+
agno/utils/merge_dict.py,sha256=K_dZdwi46gjDFn7wgqZ9_fycRIZGJCnUxFVKCrQ6PYc,1490
|
|
454
457
|
agno/utils/message.py,sha256=HcTDVdgZOfwqGL0YW5QNEeNoSLUvTawCo6_USJzsd6M,2423
|
|
455
458
|
agno/utils/openai.py,sha256=quhHsggz0uSZc9Lt-aVsveHSS1LT2r1fMgC0IpG43Tg,10300
|
|
456
459
|
agno/utils/pickle.py,sha256=Ip6CPNxAWF3MVrUhMTW7e3IcpKhYG0IA-NKbdUYr94c,1008
|
|
@@ -482,7 +485,7 @@ agno/utils/models/watsonx.py,sha256=fe6jN0hBvOCQurqjS6_9PIwDHt-4kVod9qW236Zs6DU,
|
|
|
482
485
|
agno/utils/print_response/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
483
486
|
agno/utils/print_response/agent.py,sha256=Er4YxWTMsSewC0Ckr0woabyOzT0XyLNzmXuItyuCa4s,35789
|
|
484
487
|
agno/utils/print_response/team.py,sha256=b1JzAS_oskX_0aw2Xw4JPtNLoOyWUBT_g2JToWhPT70,78659
|
|
485
|
-
agno/utils/print_response/workflow.py,sha256=
|
|
488
|
+
agno/utils/print_response/workflow.py,sha256=OwSodeoUhWHBKWZlv2eObPl0brzV_LndFrPEHn518Lc,72083
|
|
486
489
|
agno/vectordb/__init__.py,sha256=P0QP9PUC4j2JtWIfYJX7LeC-oiPuh_QsUaOaP1ZY_dI,64
|
|
487
490
|
agno/vectordb/base.py,sha256=y5kqBiIp2atgcvV-_NXNXcX6NZFqJZibBaqbkWhtFTk,3054
|
|
488
491
|
agno/vectordb/distance.py,sha256=OjpKSq57_gblZm4VGZTV7B7le45r_2-Fp1X4Hilx1M4,131
|
|
@@ -528,16 +531,16 @@ agno/vectordb/weaviate/__init__.py,sha256=FIoFJgqSmGuFgpvmsg8EjAn8FDAhuqAXed7fja
|
|
|
528
531
|
agno/vectordb/weaviate/index.py,sha256=y4XYPRZFksMfrrF85B4hn5AtmXM4SH--4CyLo27EHgM,253
|
|
529
532
|
agno/vectordb/weaviate/weaviate.py,sha256=ZXK81-mTZmPUzUi2U6B5oY2vvJ5eWCv2HqrwinijUZM,38638
|
|
530
533
|
agno/workflow/__init__.py,sha256=lwavZXIkgqajbSf1jMqzE7kbXBIFmk5niI_NgpVI-gA,542
|
|
531
|
-
agno/workflow/condition.py,sha256=
|
|
532
|
-
agno/workflow/loop.py,sha256=
|
|
533
|
-
agno/workflow/parallel.py,sha256=
|
|
534
|
-
agno/workflow/router.py,sha256=
|
|
535
|
-
agno/workflow/step.py,sha256=
|
|
536
|
-
agno/workflow/steps.py,sha256=
|
|
537
|
-
agno/workflow/types.py,sha256=
|
|
538
|
-
agno/workflow/workflow.py,sha256=
|
|
539
|
-
agno-2.1.
|
|
540
|
-
agno-2.1.
|
|
541
|
-
agno-2.1.
|
|
542
|
-
agno-2.1.
|
|
543
|
-
agno-2.1.
|
|
534
|
+
agno/workflow/condition.py,sha256=xsBExYiZzE-hs77Ze1pq5mmhraZfdMcRClM4QSJfVGQ,29898
|
|
535
|
+
agno/workflow/loop.py,sha256=2RRPSU_Xb7MiM6t5ETtWUwCabji4LWCR1XpyydrdzvM,32081
|
|
536
|
+
agno/workflow/parallel.py,sha256=atFbBNOGfby13YjmUdgrNj-OSfweCTmybcbakTSJBsw,34619
|
|
537
|
+
agno/workflow/router.py,sha256=8MhZjbzD9RtwToT9JF43xTl_ZV1o6U2A0xMkabgER0M,28071
|
|
538
|
+
agno/workflow/step.py,sha256=smLxC82EoM-lG1ghr_b6kxSqIiQRnR2M_IJo7t4c_co,57761
|
|
539
|
+
agno/workflow/steps.py,sha256=ePZd8hct1sEdGDwkXz7YWl6FjOlizY73aHpJuClVqEE,25165
|
|
540
|
+
agno/workflow/types.py,sha256=XZP9wNEsNE88zr9hhmKMHOpTEEY_UmH71AZRM43a5EY,18662
|
|
541
|
+
agno/workflow/workflow.py,sha256=3WhwXZ2u1a-fH7gx541yHW-n3DzW3Kz2ZLPBxmi4XPE,125776
|
|
542
|
+
agno-2.1.4.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
543
|
+
agno-2.1.4.dist-info/METADATA,sha256=hs_9_lcrU0lxE7-5tiHhy4Xp1rjQr1eLO4qGs5hQzeM,22009
|
|
544
|
+
agno-2.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
545
|
+
agno-2.1.4.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
|
|
546
|
+
agno-2.1.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|