agno 2.2.9__py3-none-any.whl → 2.2.11__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.
Files changed (43) hide show
  1. agno/agent/agent.py +27 -5
  2. agno/db/dynamo/utils.py +1 -1
  3. agno/db/firestore/utils.py +1 -1
  4. agno/db/gcs_json/utils.py +1 -1
  5. agno/db/in_memory/utils.py +1 -1
  6. agno/db/json/utils.py +1 -1
  7. agno/db/mongo/utils.py +3 -3
  8. agno/db/mysql/utils.py +1 -1
  9. agno/db/postgres/utils.py +1 -1
  10. agno/db/redis/utils.py +1 -1
  11. agno/db/singlestore/utils.py +1 -1
  12. agno/db/sqlite/utils.py +1 -1
  13. agno/knowledge/chunking/agentic.py +8 -9
  14. agno/knowledge/chunking/strategy.py +59 -15
  15. agno/knowledge/embedder/sentence_transformer.py +6 -2
  16. agno/knowledge/reader/base.py +6 -2
  17. agno/knowledge/utils.py +20 -0
  18. agno/models/anthropic/claude.py +45 -9
  19. agno/models/base.py +4 -0
  20. agno/os/app.py +35 -19
  21. agno/os/routers/health.py +5 -3
  22. agno/os/routers/knowledge/knowledge.py +43 -17
  23. agno/os/routers/knowledge/schemas.py +4 -3
  24. agno/run/agent.py +11 -1
  25. agno/team/team.py +20 -3
  26. agno/tools/file_generation.py +4 -4
  27. agno/tools/gmail.py +179 -0
  28. agno/tools/parallel.py +314 -0
  29. agno/utils/models/claude.py +2 -1
  30. agno/workflow/agent.py +2 -2
  31. agno/workflow/condition.py +26 -4
  32. agno/workflow/loop.py +9 -0
  33. agno/workflow/parallel.py +39 -16
  34. agno/workflow/router.py +25 -4
  35. agno/workflow/step.py +163 -91
  36. agno/workflow/steps.py +9 -0
  37. agno/workflow/types.py +20 -1
  38. agno/workflow/workflow.py +117 -30
  39. {agno-2.2.9.dist-info → agno-2.2.11.dist-info}/METADATA +4 -1
  40. {agno-2.2.9.dist-info → agno-2.2.11.dist-info}/RECORD +43 -42
  41. {agno-2.2.9.dist-info → agno-2.2.11.dist-info}/WHEEL +0 -0
  42. {agno-2.2.9.dist-info → agno-2.2.11.dist-info}/licenses/LICENSE +0 -0
  43. {agno-2.2.9.dist-info → agno-2.2.11.dist-info}/top_level.txt +0 -0
agno/workflow/workflow.py CHANGED
@@ -975,6 +975,7 @@ class Workflow:
975
975
  ) -> "WorkflowRunOutputEvent":
976
976
  """Handle workflow events for storage - similar to Team._handle_event"""
977
977
  from agno.run.agent import RunOutput
978
+ from agno.run.base import BaseRunOutputEvent
978
979
  from agno.run.team import TeamRunOutput
979
980
 
980
981
  if isinstance(event, (RunOutput, TeamRunOutput)):
@@ -993,10 +994,10 @@ class Workflow:
993
994
  return event
994
995
 
995
996
  # Store the event
996
- if workflow_run_response.events is None:
997
- workflow_run_response.events = []
998
-
999
- workflow_run_response.events.append(event)
997
+ if isinstance(event, BaseRunOutputEvent):
998
+ if workflow_run_response.events is None:
999
+ workflow_run_response.events = []
1000
+ workflow_run_response.events.append(event)
1000
1001
 
1001
1002
  # Broadcast to WebSocket if available (async context only)
1002
1003
  self._broadcast_to_websocket(event, websocket_handler)
@@ -1135,7 +1136,11 @@ class Workflow:
1135
1136
  else:
1136
1137
  return len(self.steps)
1137
1138
 
1138
- def _aggregate_workflow_metrics(self, step_results: List[Union[StepOutput, List[StepOutput]]]) -> WorkflowMetrics:
1139
+ def _aggregate_workflow_metrics(
1140
+ self,
1141
+ step_results: List[Union[StepOutput, List[StepOutput]]],
1142
+ current_workflow_metrics: Optional[WorkflowMetrics] = None,
1143
+ ) -> WorkflowMetrics:
1139
1144
  """Aggregate metrics from all step responses into structured workflow metrics"""
1140
1145
  steps_dict = {}
1141
1146
 
@@ -1163,8 +1168,13 @@ class Workflow:
1163
1168
  for step_result in step_results:
1164
1169
  process_step_output(cast(StepOutput, step_result))
1165
1170
 
1171
+ duration = None
1172
+ if current_workflow_metrics and current_workflow_metrics.duration is not None:
1173
+ duration = current_workflow_metrics.duration
1174
+
1166
1175
  return WorkflowMetrics(
1167
1176
  steps=steps_dict,
1177
+ duration=duration,
1168
1178
  )
1169
1179
 
1170
1180
  def _call_custom_function(self, func: Callable, execution_input: WorkflowExecutionInput, **kwargs: Any) -> Any:
@@ -1283,7 +1293,7 @@ class Workflow:
1283
1293
  session_id=session.session_id,
1284
1294
  user_id=self.user_id,
1285
1295
  workflow_run_response=workflow_run_response,
1286
- session_state=run_context.session_state,
1296
+ run_context=run_context,
1287
1297
  store_executor_outputs=self.store_executor_outputs,
1288
1298
  workflow_session=session,
1289
1299
  add_workflow_history_to_steps=self.add_workflow_history_to_steps
@@ -1315,7 +1325,14 @@ class Workflow:
1315
1325
 
1316
1326
  # Update the workflow_run_response with completion data
1317
1327
  if collected_step_outputs:
1318
- workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
1328
+ # Stop the timer for the Run duration
1329
+ if workflow_run_response.metrics:
1330
+ workflow_run_response.metrics.stop_timer()
1331
+
1332
+ workflow_run_response.metrics = self._aggregate_workflow_metrics(
1333
+ collected_step_outputs,
1334
+ workflow_run_response.metrics, # type: ignore[arg-type]
1335
+ )
1319
1336
  last_output = cast(StepOutput, collected_step_outputs[-1])
1320
1337
 
1321
1338
  # Use deepest nested content if this is a container (Steps/Router/Loop/etc.)
@@ -1360,6 +1377,10 @@ class Workflow:
1360
1377
  raise e
1361
1378
 
1362
1379
  finally:
1380
+ # Stop timer on error
1381
+ if workflow_run_response.metrics:
1382
+ workflow_run_response.metrics.stop_timer()
1383
+
1363
1384
  self._update_session_metrics(session=session, workflow_run_response=workflow_run_response)
1364
1385
  session.upsert_run(run=workflow_run_response)
1365
1386
  self.save_session(session=session)
@@ -1468,7 +1489,7 @@ class Workflow:
1468
1489
  stream_events=stream_events,
1469
1490
  stream_executor_events=self.stream_executor_events,
1470
1491
  workflow_run_response=workflow_run_response,
1471
- session_state=run_context.session_state,
1492
+ run_context=run_context,
1472
1493
  step_index=i,
1473
1494
  store_executor_outputs=self.store_executor_outputs,
1474
1495
  workflow_session=session,
@@ -1550,7 +1571,14 @@ class Workflow:
1550
1571
 
1551
1572
  # Update the workflow_run_response with completion data
1552
1573
  if collected_step_outputs:
1553
- workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
1574
+ # Stop the timer for the Run duration
1575
+ if workflow_run_response.metrics:
1576
+ workflow_run_response.metrics.stop_timer()
1577
+
1578
+ workflow_run_response.metrics = self._aggregate_workflow_metrics(
1579
+ collected_step_outputs,
1580
+ workflow_run_response.metrics, # type: ignore[arg-type]
1581
+ )
1554
1582
  last_output = cast(StepOutput, collected_step_outputs[-1])
1555
1583
 
1556
1584
  # Use deepest nested content if this is a container (Steps/Router/Loop/etc.)
@@ -1617,7 +1645,14 @@ class Workflow:
1617
1645
  # Preserve all progress (completed steps + partial step) before cancellation
1618
1646
  if collected_step_outputs:
1619
1647
  workflow_run_response.step_results = collected_step_outputs
1620
- workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
1648
+ # Stop the timer for the Run duration
1649
+ if workflow_run_response.metrics:
1650
+ workflow_run_response.metrics.stop_timer()
1651
+
1652
+ workflow_run_response.metrics = self._aggregate_workflow_metrics(
1653
+ collected_step_outputs,
1654
+ workflow_run_response.metrics, # type: ignore[arg-type]
1655
+ )
1621
1656
 
1622
1657
  cancelled_event = WorkflowCancelledEvent(
1623
1658
  run_id=workflow_run_response.run_id or "",
@@ -1659,6 +1694,10 @@ class Workflow:
1659
1694
  )
1660
1695
  yield self._handle_event(workflow_completed_event, workflow_run_response)
1661
1696
 
1697
+ # Stop timer on error
1698
+ if workflow_run_response.metrics:
1699
+ workflow_run_response.metrics.stop_timer()
1700
+
1662
1701
  # Store the completed workflow response
1663
1702
  self._update_session_metrics(session=session, workflow_run_response=workflow_run_response)
1664
1703
  session.upsert_run(run=workflow_run_response)
@@ -1748,15 +1787,15 @@ class Workflow:
1748
1787
  user_id: Optional[str],
1749
1788
  execution_input: WorkflowExecutionInput,
1750
1789
  workflow_run_response: WorkflowRunOutput,
1751
- session_state: Optional[Dict[str, Any]] = None,
1790
+ run_context: RunContext,
1752
1791
  **kwargs: Any,
1753
1792
  ) -> WorkflowRunOutput:
1754
1793
  """Execute a specific pipeline by name asynchronously"""
1755
1794
  from inspect import isasyncgenfunction, iscoroutinefunction, isgeneratorfunction
1756
1795
 
1757
1796
  # Read existing session from database
1758
- workflow_session, session_state = await self._aload_or_create_session(
1759
- session_id=session_id, user_id=user_id, session_state=session_state
1797
+ workflow_session, run_context.session_state = await self._aload_or_create_session(
1798
+ session_id=session_id, user_id=user_id, session_state=run_context.session_state
1760
1799
  )
1761
1800
 
1762
1801
  workflow_run_response.status = RunStatus.running
@@ -1830,7 +1869,7 @@ class Workflow:
1830
1869
  session_id=session_id,
1831
1870
  user_id=self.user_id,
1832
1871
  workflow_run_response=workflow_run_response,
1833
- session_state=session_state,
1872
+ run_context=run_context,
1834
1873
  store_executor_outputs=self.store_executor_outputs,
1835
1874
  workflow_session=workflow_session,
1836
1875
  add_workflow_history_to_steps=self.add_workflow_history_to_steps
@@ -1862,7 +1901,14 @@ class Workflow:
1862
1901
 
1863
1902
  # Update the workflow_run_response with completion data
1864
1903
  if collected_step_outputs:
1865
- workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
1904
+ # Stop the timer for the Run duration
1905
+ if workflow_run_response.metrics:
1906
+ workflow_run_response.metrics.stop_timer()
1907
+
1908
+ workflow_run_response.metrics = self._aggregate_workflow_metrics(
1909
+ collected_step_outputs,
1910
+ workflow_run_response.metrics, # type: ignore[arg-type]
1911
+ )
1866
1912
  last_output = cast(StepOutput, collected_step_outputs[-1])
1867
1913
 
1868
1914
  # Use deepest nested content if this is a container (Steps/Router/Loop/etc.)
@@ -1902,6 +1948,10 @@ class Workflow:
1902
1948
  workflow_run_response.content = f"Workflow execution failed: {e}"
1903
1949
  raise e
1904
1950
 
1951
+ # Stop timer on error
1952
+ if workflow_run_response.metrics:
1953
+ workflow_run_response.metrics.stop_timer()
1954
+
1905
1955
  self._update_session_metrics(session=workflow_session, workflow_run_response=workflow_run_response)
1906
1956
  workflow_session.upsert_run(run=workflow_run_response)
1907
1957
  if self._has_async_db():
@@ -1923,7 +1973,7 @@ class Workflow:
1923
1973
  user_id: Optional[str],
1924
1974
  execution_input: WorkflowExecutionInput,
1925
1975
  workflow_run_response: WorkflowRunOutput,
1926
- session_state: Optional[Dict[str, Any]] = None,
1976
+ run_context: RunContext,
1927
1977
  stream_events: bool = False,
1928
1978
  websocket_handler: Optional[WebSocketHandler] = None,
1929
1979
  **kwargs: Any,
@@ -1932,8 +1982,8 @@ class Workflow:
1932
1982
  from inspect import isasyncgenfunction, iscoroutinefunction, isgeneratorfunction
1933
1983
 
1934
1984
  # Read existing session from database
1935
- workflow_session, session_state = await self._aload_or_create_session(
1936
- session_id=session_id, user_id=user_id, session_state=session_state
1985
+ workflow_session, run_context.session_state = await self._aload_or_create_session(
1986
+ session_id=session_id, user_id=user_id, session_state=run_context.session_state
1937
1987
  )
1938
1988
 
1939
1989
  workflow_run_response.status = RunStatus.running
@@ -2028,7 +2078,7 @@ class Workflow:
2028
2078
  stream_events=stream_events,
2029
2079
  stream_executor_events=self.stream_executor_events,
2030
2080
  workflow_run_response=workflow_run_response,
2031
- session_state=session_state,
2081
+ run_context=run_context,
2032
2082
  step_index=i,
2033
2083
  store_executor_outputs=self.store_executor_outputs,
2034
2084
  workflow_session=workflow_session,
@@ -2113,7 +2163,14 @@ class Workflow:
2113
2163
 
2114
2164
  # Update the workflow_run_response with completion data
2115
2165
  if collected_step_outputs:
2116
- workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
2166
+ # Stop the timer for the Run duration
2167
+ if workflow_run_response.metrics:
2168
+ workflow_run_response.metrics.stop_timer()
2169
+
2170
+ workflow_run_response.metrics = self._aggregate_workflow_metrics(
2171
+ collected_step_outputs,
2172
+ workflow_run_response.metrics, # type: ignore[arg-type]
2173
+ )
2117
2174
  last_output = cast(StepOutput, collected_step_outputs[-1])
2118
2175
 
2119
2176
  # Use deepest nested content if this is a container (Steps/Router/Loop/etc.)
@@ -2180,7 +2237,14 @@ class Workflow:
2180
2237
  # Preserve all progress (completed steps + partial step) before cancellation
2181
2238
  if collected_step_outputs:
2182
2239
  workflow_run_response.step_results = collected_step_outputs
2183
- workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
2240
+ # Stop the timer for the Run duration
2241
+ if workflow_run_response.metrics:
2242
+ workflow_run_response.metrics.stop_timer()
2243
+
2244
+ workflow_run_response.metrics = self._aggregate_workflow_metrics(
2245
+ collected_step_outputs,
2246
+ workflow_run_response.metrics, # type: ignore[arg-type]
2247
+ )
2184
2248
 
2185
2249
  cancelled_event = WorkflowCancelledEvent(
2186
2250
  run_id=workflow_run_response.run_id or "",
@@ -2226,6 +2290,10 @@ class Workflow:
2226
2290
  )
2227
2291
  yield self._handle_event(workflow_completed_event, workflow_run_response, websocket_handler=websocket_handler)
2228
2292
 
2293
+ # Stop timer on error
2294
+ if workflow_run_response.metrics:
2295
+ workflow_run_response.metrics.stop_timer()
2296
+
2229
2297
  # Store the completed workflow response
2230
2298
  self._update_session_metrics(session=workflow_session, workflow_run_response=workflow_run_response)
2231
2299
  workflow_session.upsert_run(run=workflow_run_response)
@@ -2287,6 +2355,10 @@ class Workflow:
2287
2355
  status=RunStatus.pending,
2288
2356
  )
2289
2357
 
2358
+ # Start the run metrics timer
2359
+ workflow_run_response.metrics = WorkflowMetrics(steps={})
2360
+ workflow_run_response.metrics.start_timer()
2361
+
2290
2362
  # Store PENDING response immediately
2291
2363
  workflow_session.upsert_run(run=workflow_run_response)
2292
2364
  if self._has_async_db():
@@ -2330,6 +2402,7 @@ class Workflow:
2330
2402
  user_id=user_id,
2331
2403
  execution_input=inputs,
2332
2404
  workflow_run_response=workflow_run_response,
2405
+ run_context=run_context,
2333
2406
  session_state=session_state,
2334
2407
  **kwargs,
2335
2408
  )
@@ -2400,6 +2473,10 @@ class Workflow:
2400
2473
  status=RunStatus.pending,
2401
2474
  )
2402
2475
 
2476
+ # Start the run metrics timer
2477
+ workflow_run_response.metrics = WorkflowMetrics(steps={})
2478
+ workflow_run_response.metrics.start_timer()
2479
+
2403
2480
  # Prepare execution input
2404
2481
  inputs = WorkflowExecutionInput(
2405
2482
  input=input,
@@ -3382,14 +3459,6 @@ class Workflow:
3382
3459
  # Update session state from DB
3383
3460
  session_state = self._load_session_state(session=workflow_session, session_state=session_state)
3384
3461
 
3385
- # Initialize run context
3386
- run_context = RunContext(
3387
- run_id=run_id,
3388
- session_id=session_id,
3389
- user_id=user_id,
3390
- session_state=session_state,
3391
- )
3392
-
3393
3462
  log_debug(f"Workflow Run Start: {self.name}", center=True)
3394
3463
 
3395
3464
  # Use simple defaults
@@ -3422,6 +3491,14 @@ class Workflow:
3422
3491
 
3423
3492
  self.update_agents_and_teams_session_info()
3424
3493
 
3494
+ # Initialize run context
3495
+ run_context = RunContext(
3496
+ run_id=run_id,
3497
+ session_id=session_id,
3498
+ user_id=user_id,
3499
+ session_state=session_state,
3500
+ )
3501
+
3425
3502
  # Execute workflow agent if configured
3426
3503
  if self.agent is not None:
3427
3504
  return self._execute_workflow_agent(
@@ -3443,6 +3520,10 @@ class Workflow:
3443
3520
  created_at=int(datetime.now().timestamp()),
3444
3521
  )
3445
3522
 
3523
+ # Start the run metrics timer
3524
+ workflow_run_response.metrics = WorkflowMetrics(steps={})
3525
+ workflow_run_response.metrics.start_timer()
3526
+
3446
3527
  if stream:
3447
3528
  return self._execute_stream(
3448
3529
  session=workflow_session,
@@ -3630,6 +3711,10 @@ class Workflow:
3630
3711
  created_at=int(datetime.now().timestamp()),
3631
3712
  )
3632
3713
 
3714
+ # Start the run metrics timer
3715
+ workflow_run_response.metrics = WorkflowMetrics(steps={})
3716
+ workflow_run_response.metrics.start_timer()
3717
+
3633
3718
  if stream:
3634
3719
  return self._aexecute_stream( # type: ignore
3635
3720
  execution_input=inputs,
@@ -3640,6 +3725,7 @@ class Workflow:
3640
3725
  websocket=websocket,
3641
3726
  files=files,
3642
3727
  session_state=session_state,
3728
+ run_context=run_context,
3643
3729
  **kwargs,
3644
3730
  )
3645
3731
  else:
@@ -3651,6 +3737,7 @@ class Workflow:
3651
3737
  websocket=websocket,
3652
3738
  files=files,
3653
3739
  session_state=session_state,
3740
+ run_context=run_context,
3654
3741
  **kwargs,
3655
3742
  )
3656
3743
 
@@ -3974,7 +4061,7 @@ class Workflow:
3974
4061
 
3975
4062
  # If workflow has metrics, convert and add them to session metrics
3976
4063
  if workflow_run_response.metrics:
3977
- run_session_metrics = self._calculate_session_metrics_from_workflow_metrics(workflow_run_response.metrics)
4064
+ run_session_metrics = self._calculate_session_metrics_from_workflow_metrics(workflow_run_response.metrics) # type: ignore[arg-type]
3978
4065
 
3979
4066
  session_metrics += run_session_metrics
3980
4067
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.2.9
3
+ Version: 2.2.11
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
@@ -165,6 +165,8 @@ Provides-Extra: notion
165
165
  Requires-Dist: notion-client; extra == "notion"
166
166
  Provides-Extra: opencv
167
167
  Requires-Dist: opencv-python; extra == "opencv"
168
+ Provides-Extra: parallel
169
+ Requires-Dist: parallel-web; extra == "parallel"
168
170
  Provides-Extra: psycopg
169
171
  Requires-Dist: psycopg-binary; extra == "psycopg"
170
172
  Requires-Dist: psycopg; extra == "psycopg"
@@ -316,6 +318,7 @@ Requires-Dist: agno[mcp]; extra == "tools"
316
318
  Requires-Dist: agno[browserbase]; extra == "tools"
317
319
  Requires-Dist: agno[agentql]; extra == "tools"
318
320
  Requires-Dist: agno[opencv]; extra == "tools"
321
+ Requires-Dist: agno[parallel]; extra == "tools"
319
322
  Requires-Dist: agno[scrapegraph]; extra == "tools"
320
323
  Requires-Dist: agno[valyu]; extra == "tools"
321
324
  Requires-Dist: agno[confluence]; extra == "tools"
@@ -4,7 +4,7 @@ agno/exceptions.py,sha256=7xqLur8sWHugnViIJz4PvPKSHljSiVKNAqaKQOJgZiU,4982
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=paxHsIfhknPlznzldPrMdkTi3YPvbcwjTmqtrUEyTso,457595
7
+ agno/agent/agent.py,sha256=q8TvuR0AC_cCnzMPijB9a6bGU3WkP90RDeLnVgsARdY,458456
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
@@ -36,40 +36,40 @@ agno/db/async_postgres/__init__.py,sha256=ja_thcYP3bP0DD3da6iUVDR_w2-S6B3M-UxBlk
36
36
  agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
37
37
  agno/db/dynamo/dynamo.py,sha256=omSEJJ3bp6vQIeahOYv1ZpYu_GstZyY5wTEyyqpxsG8,77967
38
38
  agno/db/dynamo/schemas.py,sha256=go5a3VyShqNUzk9jBf-YQ-_5LKGnoP7zPk8taX0mlz4,12992
39
- agno/db/dynamo/utils.py,sha256=2tt1poijpdsKqh4jipiP_ZeJ5tvwWlxNLqLrRzCnd2U,27394
39
+ agno/db/dynamo/utils.py,sha256=hF6Sta-cStS-0OThuZRBsK7NlKq8cNpkatgRN4pqJqU,27400
40
40
  agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
41
41
  agno/db/firestore/firestore.py,sha256=Aty8wkI2oFN1-tZ18Izw7fN66HlQsH6XfALlWav_dJE,70882
42
42
  agno/db/firestore/schemas.py,sha256=sPbi2teuzCfRECnCyj6LrNNu0drSqbBHpH-o1xoJYfs,4392
43
- agno/db/firestore/utils.py,sha256=hQudu539CDkEKG1GvtDPOJbzdhIpSTE7Y-Uu8IdooDU,13812
43
+ agno/db/firestore/utils.py,sha256=vl7hwsOpaSgota0yN6DAQFHnviKvK670SOQme6gK-nI,13818
44
44
  agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
45
45
  agno/db/gcs_json/gcs_json_db.py,sha256=S2fDDWRD8195n9JzH3g8pIj1i_bYFr1CcDXk1OZn0Ao,54691
46
- agno/db/gcs_json/utils.py,sha256=mleGhIY2J7s5rPUteQbIBosJQgRsRDPNJEwGBzh7Hws,8008
46
+ agno/db/gcs_json/utils.py,sha256=-vGa_C8n4BSZOLICn6SEGQAZ73Cd-ejB1X5NzEfXWN8,8014
47
47
  agno/db/in_memory/__init__.py,sha256=OvR_FONhOh9PmcRfUA_6gvplZT5UGIBAgVKqVg6SWTA,80
48
48
  agno/db/in_memory/in_memory_db.py,sha256=9XeYTxjL97BBNzrqDBfIDrbd3yn7q54Zcm_65ZDJ4F4,46126
49
- agno/db/in_memory/utils.py,sha256=KM-FlcN8IszNU4dtP82oSAg5ImpYil3ygH0mOxWV2Ns,8061
49
+ agno/db/in_memory/utils.py,sha256=RaeOzP74UANG-xFzCGRb20jZ4wgp_MPSlvU0T5I1uVk,8067
50
50
  agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
51
51
  agno/db/json/json_db.py,sha256=OdMYHoZ6QlLBFRsw6AqR1r6xJYsUIHc3GVI66Mzud90,52762
52
- agno/db/json/utils.py,sha256=a4dOAKLIP8vHh64gZ3ebBTrf69EzSM4vd2_80_WwRa8,8056
52
+ agno/db/json/utils.py,sha256=ywD72LhxKl6yfmENKlOgCkw5W_XJ-oeOPSVvjsNnOy8,8062
53
53
  agno/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  agno/db/migrations/v1_to_v2.py,sha256=gj8deaEWUxOr0qJyMfjOpV3LxEh-otOSOxDckeUq0qU,24938
55
55
  agno/db/mongo/__init__.py,sha256=NG2WC2jE5PX1kMXTYCVHjhomf5DAJgvzSj45QHdvl2E,466
56
56
  agno/db/mongo/async_mongo.py,sha256=ahvzkDzfEdSSkX1QMK9VR_NbOIayR2ENJBr7vDZCY8w,81513
57
57
  agno/db/mongo/mongo.py,sha256=F77-npqo_PqZ2wcsZ11X3H9mOdaO_cLF46hMiSuqlo0,78115
58
58
  agno/db/mongo/schemas.py,sha256=d2ZxqqzKYwz0Iexgrv1HWArGnmk3KUKJ37PCzFykodI,2314
59
- agno/db/mongo/utils.py,sha256=9xdra4QRe01f441VrSpBMMy9gv7SYeKrJJchlOdwfsE,9252
59
+ agno/db/mongo/utils.py,sha256=5QYp2WgQtOK497eQMqXcTgMSGA7Y6UXX_VABX6xaLdM,9248
60
60
  agno/db/mysql/__init__.py,sha256=ohBMZ1E6ctioEF0XX5PjC4LtUQrc6lFkjsE4ojyXA8g,63
61
61
  agno/db/mysql/mysql.py,sha256=oG2Ubko4JUJUPU32XyYcebn-qhiL2Lb3p_1FLFFpi4w,96111
62
62
  agno/db/mysql/schemas.py,sha256=OpdAWhh-ElwQ5JOg1MKJqGJ16qzVTuyS56iH9Zw3oHs,6171
63
- agno/db/mysql/utils.py,sha256=XHuvgI-xAe0Y0sBZWSXW9B0xM0KKgI-JDssG7Tyqlbs,12360
63
+ agno/db/mysql/utils.py,sha256=PdqN-SxM-ox8HU9CZyxzvs2D1FE2vdZFVCyFgFcQsyU,12366
64
64
  agno/db/postgres/__init__.py,sha256=Ojk00nTCzQFiH2ViD7KIBjgpkTKLRNPCwWnuXMKtNXY,154
65
65
  agno/db/postgres/async_postgres.py,sha256=krVE38WZk-sXvqmItIf9D783atEn5PO91w3YJThaiJk,79629
66
66
  agno/db/postgres/postgres.py,sha256=OAwkG56tJ_EoffhDl2QjIxS6SIvtBvMOtBRAkyoM0lI,92325
67
67
  agno/db/postgres/schemas.py,sha256=O049oyPU07tHwnyuOzYyiKcK1NYvh6cQmmsFOvA7LTs,5971
68
- agno/db/postgres/utils.py,sha256=ZHWmVlx96pqI07h-hoiMm6TZTsudpf2zxID4MJtiY9s,15465
68
+ agno/db/postgres/utils.py,sha256=UE3UQZ-h7fADAKBsX4BWcDka54YNROEpBrlfTmDvpqc,15471
69
69
  agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
70
70
  agno/db/redis/redis.py,sha256=Mr9TDbIq7KIkunhEfufhuvZdoIKbf3i3hdA1iewbEPg,62952
71
71
  agno/db/redis/schemas.py,sha256=3WilZq3NqZqRONyu_mAjjmQpClgYDYoWjfkvlOh0Tfw,4038
72
- agno/db/redis/utils.py,sha256=4iql9MavWM3okOhuOFKK7r0TP1AAT5qAAbiL5jTE84k,11236
72
+ agno/db/redis/utils.py,sha256=DTzid-ZR3zhI058s0bqDhHQleMkdXnJ76Ezfuq0CEOM,11242
73
73
  agno/db/schemas/__init__.py,sha256=g72Zr5_nm00yXHStv4pf9PG9bGLKXEK7Av6YQtrDbCQ,147
74
74
  agno/db/schemas/culture.py,sha256=w4azKAVLf5X4xyRUFXMIEq0CA0pnyeN03W3eMpqScxo,4342
75
75
  agno/db/schemas/evals.py,sha256=T1zIiwrN5fxZVD2em85wQ9CV-HSVZvNF4D4v9_w30VA,786
@@ -79,12 +79,12 @@ agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
79
  agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
80
80
  agno/db/singlestore/schemas.py,sha256=Eb9wipCjWr48dlF3CMDa53WDvFsr7QhLOSaTgbUkMKg,6178
81
81
  agno/db/singlestore/singlestore.py,sha256=tj30IIfj0cp9_VcFXp5C5WbQ5b4160gZHgCu9qNYGj4,94023
82
- agno/db/singlestore/utils.py,sha256=NnA6YJAk1Oj-5w7Y-juxuQ7eiFnpjVAiGCV5U7QcjVE,13671
82
+ agno/db/singlestore/utils.py,sha256=w2FVFIBpFJK6nKJVt1sgv9N-esmfpGY_8ViFRI69I2I,13677
83
83
  agno/db/sqlite/__init__.py,sha256=09V3i4y0-tBjt60--57ivZ__SaaS67GCsDT4Apzv-5Y,138
84
84
  agno/db/sqlite/async_sqlite.py,sha256=4TTCcIySzPw9nY1ECLVmWjE9rwwkk1iGkhzcFK_cdwY,96574
85
85
  agno/db/sqlite/schemas.py,sha256=NyEvAFG-hi3Inm5femgJdorxJ5l2-bXLWBhxJ4r7jW0,5832
86
86
  agno/db/sqlite/sqlite.py,sha256=1Ozr74l1LInlVzwrMQruqEoP_I-ymovpEN4JVCn2Tpc,94714
87
- agno/db/sqlite/utils.py,sha256=21Z1PjQNjz1QaeY0BQY-abg0sv0nIJJ3oHuFUTV-raU,15551
87
+ agno/db/sqlite/utils.py,sha256=ZCYVrhtm9Bw1gddlaVZW7bQF2XqIJ993UDWVDGsYtX8,15557
88
88
  agno/db/surrealdb/__init__.py,sha256=C8qp5-Nx9YnSmgKEtGua-sqG_ntCXONBw1qqnNyKPqI,75
89
89
  agno/db/surrealdb/metrics.py,sha256=oKDRyjRQ6KR3HaO8zDHQLVMG7-0NDkOFOKX5I7mD5FA,10336
90
90
  agno/db/surrealdb/models.py,sha256=2KBxSxiEI4yQ2OTOr1HVeL8Fd52tQfWkM53kwzqUmyw,11512
@@ -108,16 +108,16 @@ agno/knowledge/__init__.py,sha256=PJCt-AGKGFztzR--Ok2TNKW5QEqllZzqiI_7f8-1u80,79
108
108
  agno/knowledge/content.py,sha256=q2bjcjDhfge_UrQAcygrv5R9ZTk7vozzKnQpatDQWRo,2295
109
109
  agno/knowledge/knowledge.py,sha256=NoUE-x3EkL3aWRxYzSY-i5K7Y7khGbYxJNywS8yCKB8,80093
110
110
  agno/knowledge/types.py,sha256=4NnkL_h2W-7GQnHW-yIqMNPUCWLzo5qBXF99gfsMe08,773
111
- agno/knowledge/utils.py,sha256=_uhEFtz4p7-cIKffdj5UZ__c-u96rs2UWP6dv5HpOMk,6490
111
+ agno/knowledge/utils.py,sha256=2dJE5HclZbM76TjimcHHFAz2VGmgs62DITE23DRPQBw,7302
112
112
  agno/knowledge/chunking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- agno/knowledge/chunking/agentic.py,sha256=Y2LWlDSOzSzOiz1I6XYA7QNzHDNC7Vu5gSKiJJrC2xc,3201
113
+ agno/knowledge/chunking/agentic.py,sha256=WeQ5ORe_CxsGYg0udOXjvwBo95hnpPZHVpFj-bMzuVU,3168
114
114
  agno/knowledge/chunking/document.py,sha256=pr8WE4GSCPfrWj-5Egu0DUz816YFsH-QHHojTARjnHc,3645
115
115
  agno/knowledge/chunking/fixed.py,sha256=yZLlZHisCWQKszExPuyzTT2zyaZo-udxAAjJhOI4QrE,2179
116
116
  agno/knowledge/chunking/markdown.py,sha256=M95AddeedFbG71DVxC4pbCullfX4StwmdmA9FalVPwQ,6162
117
117
  agno/knowledge/chunking/recursive.py,sha256=0zlmgFz2VfWFMCnVdJqRVrB2CLlu8Gc6BA6oy4xh4d8,2357
118
118
  agno/knowledge/chunking/row.py,sha256=yFGKMsHd2Ml0fkJLksw8ULUpWXmbSXIQwnwlKHVPP40,1426
119
119
  agno/knowledge/chunking/semantic.py,sha256=r0N4SyqFaKYTQrLnrVA202Nfadz8uST-byvVaMoLRsc,3954
120
- agno/knowledge/chunking/strategy.py,sha256=_rjZd5VQVgCUyOSR_D7jGQpsM1yAXQMbG-6q1BzOhAw,4702
120
+ agno/knowledge/chunking/strategy.py,sha256=7lqle7QvS1Ch9BGHP1elPVBF-hEqmwbD8SQ5uGxbiQM,6509
121
121
  agno/knowledge/document/__init__.py,sha256=vxMAu103larPlcpJFG3sBg-sCATf-LZZO_SlOwlEY5E,81
122
122
  agno/knowledge/document/base.py,sha256=kvoLSAxc8snrayo_-C6L3HxJVXwZiXd7Maq6VToLgfg,2087
123
123
  agno/knowledge/embedder/__init__.py,sha256=RdjcB1qoXuGVLlIkD-hn3B4zs8ycabmCVRmZsG3RhCQ,81
@@ -135,13 +135,13 @@ agno/knowledge/embedder/mistral.py,sha256=AMc3VBpQCKFxetx2gRd9c6iRvR4-bSEWJ1Q4JP
135
135
  agno/knowledge/embedder/nebius.py,sha256=4I2irehvR6Di00Al4jbG4vAa6KZnbOJ-7QqVjB7Mn64,363
136
136
  agno/knowledge/embedder/ollama.py,sha256=faLkOvPt2dWs8h87anAgeeG3LJpMH4jVMWP7_3f7JHs,6313
137
137
  agno/knowledge/embedder/openai.py,sha256=oUEyqIyREIPYRCtQBjAn-aIjxI7DQkMZQmXOt0OkLbo,7331
138
- agno/knowledge/embedder/sentence_transformer.py,sha256=khJJbJlBFDeVJm7yd4ub3e7n7rM-l5z00f594jGtIaU,2203
138
+ agno/knowledge/embedder/sentence_transformer.py,sha256=_d4XgV07bj1hkKnuzZGvP--v_-9K2e837PivJlmEoS8,2467
139
139
  agno/knowledge/embedder/together.py,sha256=Pt524Lh6YRDKfD8rfmLu0Qlw4dDh4vLz7KEMIvIULBk,387
140
140
  agno/knowledge/embedder/vllm.py,sha256=whtZs4OGzE9aXeK-L1UmwwnpgAgxFlxAfiHREroj8yA,10952
141
141
  agno/knowledge/embedder/voyageai.py,sha256=E6RjQRaa5d2BHmkW09QG68ncrgBV2Vqq25ZR8vegEFs,6602
142
142
  agno/knowledge/reader/__init__.py,sha256=edjnCwyDjM9Q5JPMi4K9mll8a3CdV52iagUKAgGiaas,159
143
143
  agno/knowledge/reader/arxiv_reader.py,sha256=PtqP3bB4eZAYUlK9_ytPCFiy4icvMj7bIZNNVlBgY6U,2735
144
- agno/knowledge/reader/base.py,sha256=9D3GU6RdGIvVD1cdOHNieA8vCIZxUBJ6HLbwl1Ol-1I,3631
144
+ agno/knowledge/reader/base.py,sha256=GLfOoy0W7rv8fgjVRUpVmInRgFFvFrPVsok_iJ9aSQ0,3780
145
145
  agno/knowledge/reader/csv_reader.py,sha256=GZiRh9yx0TM_GAEOQiBp3VfffbwGBZ7M2e5eSs45gIs,6491
146
146
  agno/knowledge/reader/docx_reader.py,sha256=5xOoEKuGBiR6hUrwiIg4ek4ZKeNBM3kYoxDeyCJ5_Vo,3308
147
147
  agno/knowledge/reader/field_labeled_csv_reader.py,sha256=cHjmEtmLNF9DRk0N5OtKOxAwYHJlMLQ0_7BScRqAxkc,11643
@@ -168,7 +168,7 @@ agno/knowledge/reranker/sentence_transformer.py,sha256=ZN4SqnMZsUhg5G7AzlONM1_Uj
168
168
  agno/memory/__init__.py,sha256=XWKJU5SJObYZqEKMZ2XYwgH8-YeuWUoSRfT4dEI5HnY,101
169
169
  agno/memory/manager.py,sha256=8dGl4Ih4OF2dLidvcgnGGf81lY34JiDrAao2i4gZAEI,51913
170
170
  agno/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
- agno/models/base.py,sha256=ZjXNOasbJOUSLC81RZXeOx4QtFE6y9vc3BSvBqYga4o,96861
171
+ agno/models/base.py,sha256=HxTYPHgNZVTruTA9qxR_5GSdZtAzqEvRFylZhxRVMxM,97123
172
172
  agno/models/defaults.py,sha256=1_fe4-ZbNriE8BgqxVRVi4KGzEYxYKYsz4hn6CZNEEM,40
173
173
  agno/models/message.py,sha256=HMlY71ZCDWCUrNTqIbRezWZK5FfWcvcs5eg_hhjbuqo,19023
174
174
  agno/models/metrics.py,sha256=81IILXZwGmOTiWK003bi5mg4bM1f4LCWbwyamjFzp18,4500
@@ -177,7 +177,7 @@ agno/models/utils.py,sha256=jxAIIG2y7KBypwFlc87GzFnvogRpGLfd-wwr6KXZIj8,7269
177
177
  agno/models/aimlapi/__init__.py,sha256=XQcFRvt4qJ8ol9nCC0XKEkVEDivdNf3nZNoJZMZ5m8M,78
178
178
  agno/models/aimlapi/aimlapi.py,sha256=9Qh-b8HvFSvmPP3VBNGT00qy9izHLMWgR-KDQCE5CM0,1493
179
179
  agno/models/anthropic/__init__.py,sha256=nbReX3p17JCwfrMDR9hR7-OaEFZm80I7dng93dl-Fhw,77
180
- agno/models/anthropic/claude.py,sha256=x2a9FY93onVU-PJUEzdvSp8xpJlQtaVnn8F3_0dZafk,30835
180
+ agno/models/anthropic/claude.py,sha256=HzSzF-WU-3iqe41_fFiVH7rjPpLFhR_nSUXoHT1tHW4,32820
181
181
  agno/models/aws/__init__.py,sha256=TbcwQwv9A7KjqBM5RQBR8x46GvyyCxbBCjwkpjfVGKE,352
182
182
  agno/models/aws/bedrock.py,sha256=ScZcGwOMh-N0DfArXtDVzKy467QPAN0OS8llBNAc8cQ,28880
183
183
  agno/models/aws/claude.py,sha256=sL47z9fM3jxGbARkr0mlAVYEKKX854J3u-Qeb5gIADo,14746
@@ -258,7 +258,7 @@ agno/models/vllm/vllm.py,sha256=UtiiSvUR4pG_1CzuhY5MWduRgzM2hGVTakKJ6ZBdQmo,2730
258
258
  agno/models/xai/__init__.py,sha256=ukcCxnCHxTtkJNA2bAMTX4MhCv1wJcbiq8ZIfYczIxs,55
259
259
  agno/models/xai/xai.py,sha256=jA6_39tfapkjkHKdzbKaNq1t9qIvO1IaZY1hQqEmFVs,4181
260
260
  agno/os/__init__.py,sha256=h8oQu7vhD5RZf09jkyM_Kt1Kdq_d5kFB9gJju8QPwcY,55
261
- agno/os/app.py,sha256=LIbMjKMlQRSZD1AEheHmStt4eFLgQbZfssj4bfR1Sgo,34122
261
+ agno/os/app.py,sha256=Me7CErHganEiMF6gmXiHI6uJpMi6XqGhjYhNSaN3BcA,34674
262
262
  agno/os/auth.py,sha256=FyBtAKWtg-qSunCas5m5pK1dVEmikOSZvcCp5r25tTA,1844
263
263
  agno/os/config.py,sha256=QPGxENF2yezEOp0yV9OXU-FBs4_vYSXkxbbSol51wPE,2932
264
264
  agno/os/mcp.py,sha256=7lAiELFmwcF-eN_pOIJVjun9r5dFcQfPTHD_rP1Zu-s,10318
@@ -287,15 +287,15 @@ agno/os/interfaces/whatsapp/whatsapp.py,sha256=tNJncEu_hm0lFOHbjaSoz5-VIKORR_pyW
287
287
  agno/os/middleware/__init__.py,sha256=EYsNzeixFgL3n8kepKWXT42fTTmrNyD8b8rOdXecMRI,94
288
288
  agno/os/middleware/jwt.py,sha256=xw9jQkVFMTTzUVird1k-egAYBmPd174L06YflYCvB5Q,9468
289
289
  agno/os/routers/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
290
- agno/os/routers/health.py,sha256=JSbV48eRucSkMhBUfr0rsaMaXQEH4oBU3o4YF1sWvRQ,912
290
+ agno/os/routers/health.py,sha256=AO3ec6Xi1wXOwUUFJhEcM45488qu6aZRJTwF2GLz6Ak,992
291
291
  agno/os/routers/home.py,sha256=xe8DYJkRgad55qiza0lHt8pUIV5PLSyu2MkybjuPDDE,1708
292
292
  agno/os/routers/evals/__init__.py,sha256=3s0M-Ftg5A3rFyRfTATs-0aNA6wcbj_5tCvtwH9gORQ,87
293
293
  agno/os/routers/evals/evals.py,sha256=S-ybLJtE3oLJrYiHGOAxr2FCYMYd1634GhV_M7SxHlA,18923
294
294
  agno/os/routers/evals/schemas.py,sha256=G6XvlEcl0FtgdsmHUjrEWxwxwGMhuYR2HsjfFT3QXUM,6523
295
295
  agno/os/routers/evals/utils.py,sha256=cmBuf5HtJLcLaVrb_a1HizEUIrXbdbKu9rzo8FWfG88,5567
296
296
  agno/os/routers/knowledge/__init__.py,sha256=ZSqMQ8X7C_oYn8xt7NaYlriarWUpHgaWDyHXOWooMaU,105
297
- agno/os/routers/knowledge/knowledge.py,sha256=Hq6nIjmzygAZ6uT340ttot7Rilkfnedt7PbpuVjiDrg,43849
298
- agno/os/routers/knowledge/schemas.py,sha256=ccf-KsZmcm99voPH1yvNngc3W5IC9SRkni_5-_J2erk,8957
297
+ agno/os/routers/knowledge/knowledge.py,sha256=rDYHtxZ5WltLz0eeuHLTTUlw8dvICblrFJAhPuFAJCA,45331
298
+ agno/os/routers/knowledge/schemas.py,sha256=GUr5RsRbI7K3qrrOlGVfW0Kf7XO6HjMviMW6nEl6qf8,8847
299
299
  agno/os/routers/memory/__init__.py,sha256=9hrYFc1dkbsLBqKfqyfioQeLX9TTbLrJx6lWDKNNWbc,93
300
300
  agno/os/routers/memory/memory.py,sha256=d13lESaVpgcpsKORhtH425LlTYVcggn96ZLcZE1xr00,21376
301
301
  agno/os/routers/memory/schemas.py,sha256=TmeDwDEfIIxZV68ORjxfQqxJ4KArlmEUghF-xRKQqLo,2719
@@ -317,7 +317,7 @@ agno/reasoning/openai.py,sha256=JYk-mR9cMf1ibprX3MdL8oeCEDyQ3XaJw9PAIYvWeGk,3234
317
317
  agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
318
318
  agno/reasoning/vertexai.py,sha256=O9ntvalkIY2jLmWviEH1DnecMskqTL-mRZQBZohoHiU,2974
319
319
  agno/run/__init__.py,sha256=DFjpUomTzHvIDQQE_PUfp4oJM-7Ti8h8a_Fe5Kr8rjM,98
320
- agno/run/agent.py,sha256=xwz3eSY-DiEZ45elxeJa2y9OJ0JZdPqfNaOOo1ioW30,27129
320
+ agno/run/agent.py,sha256=zy7gLVp_pMqa_Cg2mZ8I1EVGrfGMfzOoW3syly9E7Lc,27484
321
321
  agno/run/base.py,sha256=vVsmcL3E7ZiEZFAjJFrwEYzzsmnRLwNhWqelJTe4raU,8193
322
322
  agno/run/cancel.py,sha256=yoSj3fnx8D7Gf-fSngVIgd3GOp3tRaDhHH_4QeHDoAk,2667
323
323
  agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
@@ -329,7 +329,7 @@ agno/session/summary.py,sha256=f0e02PblHEzG1uPvNiLSTbR1DpwchDy4kCin4l2Dt20,10304
329
329
  agno/session/team.py,sha256=M9QEmGYyQM64ZsvPWRdp1xZV6EQGuun6pjJL05AzU-k,15260
330
330
  agno/session/workflow.py,sha256=DnYjubF6rKwDl_HSR3_ieLeX0SyGm6xkn9SCWJ1ldbk,7419
331
331
  agno/team/__init__.py,sha256=toHidBOo5M3n_TIVtIKHgcDbLL9HR-_U-YQYuIt_XtE,847
332
- agno/team/team.py,sha256=XJi0sKJ7iFaDaZHy8CeS-WrUWiaztXbCLF03J9ty-OY,398640
332
+ agno/team/team.py,sha256=oOjpT93M3AbuoI92w1ccOwR8toWT1sjOnxgw6jmR7a8,399194
333
333
  agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
334
334
  agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
335
335
  agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
@@ -366,13 +366,13 @@ agno/tools/evm.py,sha256=lX8KhpfHBcYANuNLmNI7EmwrnkE1anXjWGsGuM3_hRM,5371
366
366
  agno/tools/exa.py,sha256=YyDIxqmMCTh1Z1hv4fmyCsnnIOlLTTerxcC1ToNsLww,16998
367
367
  agno/tools/fal.py,sha256=49rgpgfpk-aKUs18x8vDH1Wa4jNOPKN3iczfqWMo8xw,4633
368
368
  agno/tools/file.py,sha256=S_SFXzW1uzm29ecL0FH1QoWQKq3mD9JthALVSq549fg,10244
369
- agno/tools/file_generation.py,sha256=OMRG1CkpnZTCMxnKXGHfkfdXUYEur9jsdyCNxujWHS4,13896
369
+ agno/tools/file_generation.py,sha256=81c7AWQ1zLYAum7MbbsGlXYaVWjwW4i3H0L5R2Wj4HA,13868
370
370
  agno/tools/financial_datasets.py,sha256=NiXwyiYIFCawI8rR7JLJNIfwoQlranUeCcABHKhLHfw,9190
371
371
  agno/tools/firecrawl.py,sha256=sMV6XRaSIyTSkTJbtMdIQPTsN11ozJ78YDDi04kBvQE,5341
372
372
  agno/tools/function.py,sha256=9Ka6GCGebOBSLE2ow-Q32dyZxLHkn3PQUAdnkfm1Rus,51406
373
373
  agno/tools/giphy.py,sha256=_wOCWVnMdFByE9Yoz4Pf2MoKxSjkUTiPJZ928_BNe2M,3070
374
374
  agno/tools/github.py,sha256=wct6P00YzF3zgWoV2c5aHeXX_2dgb9LqRwJAboi6QXw,70286
375
- agno/tools/gmail.py,sha256=gcpLfTQP--TJz9bPD12SDwwHickSLZ7yugWZcNNIuGg,29799
375
+ agno/tools/gmail.py,sha256=m_7SY4oz2sP0RSJyNItZ_h5VeyI86J8840_p5Nz_2So,37073
376
376
  agno/tools/google_bigquery.py,sha256=j0c14CgGK8KvD7eEirsdAx7RSwcfMheugn84ySq6miU,4483
377
377
  agno/tools/google_drive.py,sha256=dxGr_NhMsqFsr_tR3w4MgLXm7_nlCTI43sCmKw60N_4,11159
378
378
  agno/tools/google_maps.py,sha256=AqPEIt4u6B2kQtzOnL5PH3RXoefCfjT_Uvm3coAqzaY,9513
@@ -404,6 +404,7 @@ agno/tools/opencv.py,sha256=m6vEJUcmYJZzIbyLIkx-T25zW5htjMCyrOB0PCvG2-U,12447
404
404
  agno/tools/openweather.py,sha256=vw5gIr9E5psiHpTyN-HyQ1T2upJwE205w-jJs_Pc7fc,8692
405
405
  agno/tools/oxylabs.py,sha256=0SuckyOBIVMKCf3VyPDmKIZv4ILdu6N6AcDws7A3NiY,17619
406
406
  agno/tools/pandas.py,sha256=Q3I3-lVMOng06FYs5DQZtOOdujjLWfWL7j5kf-xx8Z0,4882
407
+ agno/tools/parallel.py,sha256=YYQhPxDSKP7CdKamd6LnP9u5CKy03R8hpWN474unWcg,13976
407
408
  agno/tools/postgres.py,sha256=16oIQBcTb-3JMnhWEAj6PgXoeB8-gtjSipUQT9kaNhk,10075
408
409
  agno/tools/pubmed.py,sha256=4UVcZXVFFs6jV_7PQAWUGKZDEey1KbIJDztQhaS6m9g,8170
409
410
  agno/tools/python.py,sha256=02uHb30r66D7zbqHEbmniWZUAeeJZ0y-Q0_xWiPXChk,8783
@@ -499,7 +500,7 @@ agno/utils/whatsapp.py,sha256=242VwGOdbgkxVeIj4D899mpT3GnG_IpcaKnd5qebhTA,9936
499
500
  agno/utils/yaml_io.py,sha256=cwTqCE-eBGoi87KLDcwB6iyWe0NcvEmadQjWL1cQ7jE,860
500
501
  agno/utils/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
501
502
  agno/utils/models/ai_foundry.py,sha256=PmhETWhdqZCq8NbDe-MdZVuRXx6DbVOePCyPFiPLceo,1511
502
- agno/utils/models/claude.py,sha256=DFKYbAude74YObEVEPM3Dl7PjxU_32SmltbLgmKaxp8,12011
503
+ agno/utils/models/claude.py,sha256=-XChDFdqYHMhvVyrbQhAKuuhp4q8QhVky1Q1FokRUGU,12008
503
504
  agno/utils/models/cohere.py,sha256=wir2K9u4RmOwq7T7n_2UPZFHfwmnrt_u91Psd_DFqdE,3266
504
505
  agno/utils/models/llama.py,sha256=Z5fdOFUFnov1JgUDcP6ICK3M7o64UB1fkcwAs2XaZkM,2515
505
506
  agno/utils/models/mistral.py,sha256=SVcJ8Q8SFeadNwCr8BARbET0gvGiylmaDKzcSJ9kWq0,4189
@@ -557,17 +558,17 @@ agno/vectordb/weaviate/__init__.py,sha256=FIoFJgqSmGuFgpvmsg8EjAn8FDAhuqAXed7fja
557
558
  agno/vectordb/weaviate/index.py,sha256=y4XYPRZFksMfrrF85B4hn5AtmXM4SH--4CyLo27EHgM,253
558
559
  agno/vectordb/weaviate/weaviate.py,sha256=8KNa5a-RuksE6w9poD4vi_ixUBeoB96PkzCL9DHSs5o,39406
559
560
  agno/workflow/__init__.py,sha256=Ze2j811jwnsS8Sjv6u0Ap4l7Pyw_ivRof1uBYNJhb1w,609
560
- agno/workflow/agent.py,sha256=y9uMGPRx7PuSqRxUz5m4a3dNRhhRjb4YFp14J2Uz-lc,12202
561
- agno/workflow/condition.py,sha256=DzgJkuhgkWvBpK2AFteSoDK36uJDHkE7ZWCePgsmp0I,31601
562
- agno/workflow/loop.py,sha256=qNaHREa_k__qJ6pyM28VJcM2Vxkfpen7ol7FCA8OoJo,32539
563
- agno/workflow/parallel.py,sha256=vcepml4Ww1JXJVLnfaxGwYfv0AVkuEeBS2LWmy7lIGI,35125
564
- agno/workflow/router.py,sha256=q2nuFMEAUQwVTZGncFCwlOsdOw-4nHt5QNJQgEdhv6I,29707
565
- agno/workflow/step.py,sha256=yKydNQfxsXCd1ujVuuPDRv9-iKHQJBGko_zxb03hdyQ,60988
566
- agno/workflow/steps.py,sha256=O3lbKw56ziSnuJndAGm8hjlEwdTh2jQXf1s0587Va3M,25671
567
- agno/workflow/types.py,sha256=J474F5MWHCHHVjrzTUPJihlcrRLUnQ3hVW2-9TWdxWw,18519
568
- agno/workflow/workflow.py,sha256=KCoPXN4dJ8e5h_aS_5QcyhcQFEvT2SjGOM4yl8Clz0E,185801
569
- agno-2.2.9.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
570
- agno-2.2.9.dist-info/METADATA,sha256=ZUOhLPB4f59Xv7zTOuKaEGPQQ8JIWKcLJqdSxRpLQzw,28548
571
- agno-2.2.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
572
- agno-2.2.9.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
573
- agno-2.2.9.dist-info/RECORD,,
561
+ agno/workflow/agent.py,sha256=fKLB4kop7YYFeM1e-d3IzvVPsVF5cLNX6Z0gPn81ZR4,12170
562
+ agno/workflow/condition.py,sha256=4VXIpBH9-G9W0w10Sn4qn32gg9kap4uKVEF6dxIxGrg,32909
563
+ agno/workflow/loop.py,sha256=T38rX3wQeCMW7twIHjPKfhE_ONlsa6p3tKl0xgR7zwo,32956
564
+ agno/workflow/parallel.py,sha256=_kDg15O65RLgmEwAsE15ckwALgmHdreQ2TSt5yiOBio,36684
565
+ agno/workflow/router.py,sha256=1ez59iVrkV0g56WKdo26EDS2yeQFnC8aEA8KbzmBJV0,30986
566
+ agno/workflow/step.py,sha256=fc0CGfdj6yZAS-QiU_xs1ik1d-M5AQ4Rx6hqsKITDHs,65111
567
+ agno/workflow/steps.py,sha256=jMGnCUNTwU8bUj8Uf3xNrwPWrKWqx4TfJSzGZCKiVWY,26088
568
+ agno/workflow/types.py,sha256=T8O0CuKe48MRuPtgdDlECJQL8mgJ4TKClaw9hHN3Ebw,19149
569
+ agno/workflow/workflow.py,sha256=k1IWyxFJZp_yYMHC07XWTMsPCOMJKkhK8S6EKAFumy4,189341
570
+ agno-2.2.11.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
571
+ agno-2.2.11.dist-info/METADATA,sha256=JGKibAjTjZ9aNyr4Fx6ZjxRfrdhI5YAXJCfVRH0b9vk,28671
572
+ agno-2.2.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
573
+ agno-2.2.11.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
574
+ agno-2.2.11.dist-info/RECORD,,
File without changes