agno 2.3.19__py3-none-any.whl → 2.3.20__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/utils/response.py CHANGED
@@ -1,4 +1,4 @@
1
- from typing import AsyncIterator, Iterator, List, Set, Union
1
+ from typing import List, Set, Union
2
2
 
3
3
  from agno.exceptions import RunCancelledException
4
4
  from agno.models.response import ToolExecution
@@ -149,15 +149,3 @@ def get_paused_content(run_output: RunOutput) -> str:
149
149
  elif external_execution_required:
150
150
  paused_content = "I have tools to execute, but it needs external execution."
151
151
  return paused_content
152
-
153
-
154
- def generator_wrapper(
155
- event: Union[RunOutputEvent, TeamRunOutputEvent],
156
- ) -> Iterator[Union[RunOutputEvent, TeamRunOutputEvent]]:
157
- yield event
158
-
159
-
160
- async def async_generator_wrapper(
161
- event: Union[RunOutputEvent, TeamRunOutputEvent],
162
- ) -> AsyncIterator[Union[RunOutputEvent, TeamRunOutputEvent]]:
163
- yield event
@@ -1,5 +1,5 @@
1
1
  from agno.vectordb.weaviate.index import Distance, VectorIndex
2
- from agno.vectordb.weaviate.weaviate import Weaviate, SearchType
2
+ from agno.vectordb.weaviate.weaviate import SearchType, Weaviate
3
3
 
4
4
  __all__ = [
5
5
  "Distance",
agno/workflow/workflow.py CHANGED
@@ -37,13 +37,16 @@ from agno.models.metrics import Metrics
37
37
  from agno.run import RunContext, RunStatus
38
38
  from agno.run.agent import RunContentEvent, RunEvent, RunOutput
39
39
  from agno.run.cancel import (
40
- cancel_run as cancel_run_global,
41
- )
42
- from agno.run.cancel import (
40
+ acleanup_run,
41
+ araise_if_cancelled,
42
+ aregister_run,
43
43
  cleanup_run,
44
44
  raise_if_cancelled,
45
45
  register_run,
46
46
  )
47
+ from agno.run.cancel import (
48
+ cancel_run as cancel_run_global,
49
+ )
47
50
  from agno.run.team import RunContentEvent as TeamRunContentEvent
48
51
  from agno.run.team import TeamRunEvent
49
52
  from agno.run.workflow import (
@@ -1879,6 +1882,7 @@ class Workflow:
1879
1882
  """Execute a specific pipeline by name asynchronously"""
1880
1883
  from inspect import isasyncgenfunction, iscoroutinefunction, isgeneratorfunction
1881
1884
 
1885
+ await aregister_run(run_context.run_id)
1882
1886
  # Read existing session from database
1883
1887
  workflow_session, run_context.session_state = await self._aload_or_create_session(
1884
1888
  session_id=session_id, user_id=user_id, session_state=run_context.session_state
@@ -1902,14 +1906,14 @@ class Workflow:
1902
1906
  elif isasyncgenfunction(self.steps): # type: ignore
1903
1907
  async_gen = await self._acall_custom_function(self.steps, execution_input, **kwargs)
1904
1908
  async for chunk in async_gen:
1905
- raise_if_cancelled(workflow_run_response.run_id) # type: ignore
1909
+ await araise_if_cancelled(workflow_run_response.run_id) # type: ignore
1906
1910
  if hasattr(chunk, "content") and chunk.content is not None and isinstance(chunk.content, str):
1907
1911
  content += chunk.content
1908
1912
  else:
1909
1913
  content += str(chunk)
1910
1914
  workflow_run_response.content = content
1911
1915
  else:
1912
- raise_if_cancelled(workflow_run_response.run_id) # type: ignore
1916
+ await araise_if_cancelled(workflow_run_response.run_id) # type: ignore
1913
1917
  workflow_run_response.content = self._call_custom_function(self.steps, execution_input, **kwargs)
1914
1918
  workflow_run_response.status = RunStatus.completed
1915
1919
 
@@ -1929,7 +1933,7 @@ class Workflow:
1929
1933
  output_files: List[File] = (execution_input.files or []).copy() # Start with input files
1930
1934
 
1931
1935
  for i, step in enumerate(self.steps): # type: ignore[arg-type]
1932
- raise_if_cancelled(workflow_run_response.run_id) # type: ignore
1936
+ await araise_if_cancelled(workflow_run_response.run_id) # type: ignore
1933
1937
  step_name = getattr(step, "name", f"step_{i + 1}")
1934
1938
  log_debug(f"Async Executing step {i + 1}/{self._get_step_count()}: {step_name}")
1935
1939
 
@@ -1944,7 +1948,7 @@ class Workflow:
1944
1948
  )
1945
1949
 
1946
1950
  # Check for cancellation before executing step
1947
- raise_if_cancelled(workflow_run_response.run_id) # type: ignore
1951
+ await araise_if_cancelled(workflow_run_response.run_id) # type: ignore
1948
1952
 
1949
1953
  step_output = await step.aexecute( # type: ignore[union-attr]
1950
1954
  step_input,
@@ -1962,7 +1966,7 @@ class Workflow:
1962
1966
  )
1963
1967
 
1964
1968
  # Check for cancellation after step execution
1965
- raise_if_cancelled(workflow_run_response.run_id) # type: ignore
1969
+ await araise_if_cancelled(workflow_run_response.run_id) # type: ignore
1966
1970
 
1967
1971
  # Update the workflow-level previous_step_outputs dictionary
1968
1972
  previous_step_outputs[step_name] = step_output
@@ -2042,7 +2046,7 @@ class Workflow:
2042
2046
  else:
2043
2047
  self.save_session(session=workflow_session)
2044
2048
  # Always clean up the run tracking
2045
- cleanup_run(workflow_run_response.run_id) # type: ignore
2049
+ await acleanup_run(workflow_run_response.run_id) # type: ignore
2046
2050
 
2047
2051
  # Log Workflow Telemetry
2048
2052
  if self.telemetry:
@@ -2065,6 +2069,8 @@ class Workflow:
2065
2069
  """Execute a specific pipeline by name with event streaming"""
2066
2070
  from inspect import isasyncgenfunction, iscoroutinefunction, isgeneratorfunction
2067
2071
 
2072
+ await aregister_run(run_context.run_id)
2073
+
2068
2074
  # Read existing session from database
2069
2075
  workflow_session, run_context.session_state = await self._aload_or_create_session(
2070
2076
  session_id=session_id, user_id=user_id, session_state=run_context.session_state
@@ -2096,7 +2102,7 @@ class Workflow:
2096
2102
  content = ""
2097
2103
  async_gen = await self._acall_custom_function(self.steps, execution_input, **kwargs)
2098
2104
  async for chunk in async_gen:
2099
- raise_if_cancelled(workflow_run_response.run_id) # type: ignore
2105
+ await araise_if_cancelled(workflow_run_response.run_id) # type: ignore
2100
2106
  if hasattr(chunk, "content") and chunk.content is not None and isinstance(chunk.content, str):
2101
2107
  content += chunk.content
2102
2108
  yield chunk
@@ -2131,7 +2137,7 @@ class Workflow:
2131
2137
 
2132
2138
  for i, step in enumerate(self.steps): # type: ignore[arg-type]
2133
2139
  if workflow_run_response.run_id:
2134
- raise_if_cancelled(workflow_run_response.run_id)
2140
+ await araise_if_cancelled(workflow_run_response.run_id)
2135
2141
  step_name = getattr(step, "name", f"step_{i + 1}")
2136
2142
  log_debug(f"Async streaming step {i + 1}/{self._get_step_count()}: {step_name}")
2137
2143
 
@@ -2169,7 +2175,7 @@ class Workflow:
2169
2175
  background_tasks=background_tasks,
2170
2176
  ):
2171
2177
  if workflow_run_response.run_id:
2172
- raise_if_cancelled(workflow_run_response.run_id)
2178
+ await araise_if_cancelled(workflow_run_response.run_id)
2173
2179
 
2174
2180
  # Accumulate partial data from streaming events
2175
2181
  partial_step_content = self._accumulate_partial_step_data(event, partial_step_content) # type: ignore
@@ -2399,7 +2405,7 @@ class Workflow:
2399
2405
  await self._alog_workflow_telemetry(session_id=session_id, run_id=workflow_run_response.run_id)
2400
2406
 
2401
2407
  # Always clean up the run tracking
2402
- cleanup_run(workflow_run_response.run_id) # type: ignore
2408
+ await acleanup_run(workflow_run_response.run_id) # type: ignore
2403
2409
 
2404
2410
  async def _arun_background(
2405
2411
  self,
@@ -3119,7 +3125,8 @@ class Workflow:
3119
3125
  if stream:
3120
3126
 
3121
3127
  async def _stream():
3122
- session, session_state_loaded = await self._aload_session_for_workflow_agent(
3128
+ await aregister_run(run_context.run_id)
3129
+ session, _ = await self._aload_session_for_workflow_agent(
3123
3130
  run_context.session_id, run_context.user_id, run_context.session_state
3124
3131
  )
3125
3132
  async for event in self._arun_workflow_agent_stream(
@@ -3137,7 +3144,8 @@ class Workflow:
3137
3144
  else:
3138
3145
 
3139
3146
  async def _execute():
3140
- session, session_state_loaded = await self._aload_session_for_workflow_agent(
3147
+ await aregister_run(run_context.run_id)
3148
+ session, _ = await self._aload_session_for_workflow_agent(
3141
3149
  run_context.session_id, run_context.user_id, run_context.session_state
3142
3150
  )
3143
3151
  return await self._arun_workflow_agent(
@@ -3790,7 +3798,6 @@ class Workflow:
3790
3798
 
3791
3799
  # Set the id for the run and register it immediately for cancellation tracking
3792
3800
  run_id = run_id or str(uuid4())
3793
- register_run(run_id)
3794
3801
 
3795
3802
  self.initialize_workflow()
3796
3803
  session_id, user_id = self._initialize_session(session_id=session_id, user_id=user_id)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.3.19
3
+ Version: 2.3.20
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
@@ -49,6 +49,7 @@ Requires-Dist: uvicorn; extra == "dev"
49
49
  Requires-Dist: PyJWT; extra == "dev"
50
50
  Requires-Dist: mcp; extra == "dev"
51
51
  Requires-Dist: openai; extra == "dev"
52
+ Requires-Dist: fakeredis; extra == "dev"
52
53
  Provides-Extra: os
53
54
  Requires-Dist: fastapi; extra == "os"
54
55
  Requires-Dist: uvicorn; extra == "os"
@@ -424,7 +425,7 @@ Dynamic: license-file
424
425
 
425
426
  Agno is an incredibly fast multi-agent framework, runtime and control plane.
426
427
 
427
- Companies want to build AI products, run them as a secure containerized service in their cloud, and monitor, test, and manage their agentic system with a beautiful UI. Doing this takes far more than calling an LLM API in a loop, it requires a thoughtfully designed agentic platform.
428
+ Companies want to build AI products, run them securely in their cloud, and manage their agents with a beautiful UI. This takes more than calling an LLM API, it requires a thoughtfully designed agentic platform.
428
429
 
429
430
  Agno provides the unified stack for building, running and managing multi-agent systems:
430
431
 
@@ -6,7 +6,7 @@ agno/media.py,sha256=PisfrNwkx2yVOW8p6LXlV237jI06Y6kGjd7wUMk5170,17121
6
6
  agno/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  agno/table.py,sha256=9hHFnInNsrj0ZKtWjGDP5c6kbmNdtQvDDYT2j2CZJ6o,198
8
8
  agno/agent/__init__.py,sha256=K1umiV73llHpUidDlng0J3T_YY6tbISfsNKw_2S-L1U,1112
9
- agno/agent/agent.py,sha256=srcRdO4BfEBmd_bMmqmxn3U1A4IBgG9nAQYMOzSIxDo,487082
9
+ agno/agent/agent.py,sha256=rFTdOH2g17OKbW7PkW2ZbSk49vhuMqbi5CGOeKFt0JE,513187
10
10
  agno/agent/remote.py,sha256=mnjOHqgIDv_e7XN3eQS_vlNUppHE_i937XIZpCbI00s,12786
11
11
  agno/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  agno/api/agent.py,sha256=fKlQ62E_C9Rjd7Zus3Gs3R1RG-IhzFV-ICpkb6SLqYc,932
@@ -38,25 +38,25 @@ agno/culture/__init__.py,sha256=nVScbcUeBmkj8l-rJWGOVGytwp5xB6IfUEL_h6atzQw,118
38
38
  agno/culture/manager.py,sha256=sh48GgfkgwQth2vB5ulgrbv2HGAfVidABrwAYEzWGBs,39833
39
39
  agno/db/__init__.py,sha256=bfd_tpKsIKCjZosnFqID26VoWqy88v8gzkf9kLHToY4,625
40
40
  agno/db/base.py,sha256=ZxVW353j-te2v7tlJpvRVsJbT8sfG1pUd7cB0Pnr7g0,32257
41
- agno/db/utils.py,sha256=IAMrvy0MrqVr6VIN0ntG17g4nGDV9lUwRzneAAI02kI,4943
41
+ agno/db/utils.py,sha256=lYLgMTZx7pF7M2upww2TCz1tui2FW0m6PWg7QPe-pEo,5727
42
42
  agno/db/async_postgres/__init__.py,sha256=ja_thcYP3bP0DD3da6iUVDR_w2-S6B3M-UxBlkRfAvY,76
43
43
  agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
44
44
  agno/db/dynamo/dynamo.py,sha256=QBegFbGEgHfdXUB4AeBfY9WDa3VvFOaP5ru4mEulMkg,108880
45
45
  agno/db/dynamo/schemas.py,sha256=NbVLIEqe2D5QYhS9JAAPqK4RdADN3G6fBJbULzGtPKM,18507
46
- agno/db/dynamo/utils.py,sha256=hF6Sta-cStS-0OThuZRBsK7NlKq8cNpkatgRN4pqJqU,27400
46
+ agno/db/dynamo/utils.py,sha256=z-s0FAWfiGJPT_k68rlArP5SnaXlW8ycnGi9dh4Nehc,28005
47
47
  agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
48
48
  agno/db/firestore/firestore.py,sha256=UZrzAJXxj5kBdCtWjFTUIO57hl-P4mCtAsp31Hhi4R8,94167
49
49
  agno/db/firestore/schemas.py,sha256=dri9lGHxs-IsqvsgL_noFoeAVn9iZflMPsqHkNdA-DM,6123
50
- agno/db/firestore/utils.py,sha256=vl7hwsOpaSgota0yN6DAQFHnviKvK670SOQme6gK-nI,13818
50
+ agno/db/firestore/utils.py,sha256=lshztynSRxYUQxA1LTCPZlugaW4VKOB5TtKjQ1BQ94s,14194
51
51
  agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
52
52
  agno/db/gcs_json/gcs_json_db.py,sha256=n3hZk-QLinaebtvHSO_YeuV0U5hn8mSnrhigJ6ZjTKI,72287
53
- agno/db/gcs_json/utils.py,sha256=-vGa_C8n4BSZOLICn6SEGQAZ73Cd-ejB1X5NzEfXWN8,8014
53
+ agno/db/gcs_json/utils.py,sha256=28mvPbfctJUUgNkZyJ4DUoVZhZlyEpw4VVplUdevapM,8373
54
54
  agno/db/in_memory/__init__.py,sha256=OvR_FONhOh9PmcRfUA_6gvplZT5UGIBAgVKqVg6SWTA,80
55
55
  agno/db/in_memory/in_memory_db.py,sha256=OBd1leLvXyfNYxmKH6ch8RFfwqPF8wpcCq_xXjWsaaU,51254
56
- agno/db/in_memory/utils.py,sha256=RaeOzP74UANG-xFzCGRb20jZ4wgp_MPSlvU0T5I1uVk,8067
56
+ agno/db/in_memory/utils.py,sha256=kyD14OoRn5sqxjgternnDZRKyFLbOTcxBMLHVGd-UO4,8426
57
57
  agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
58
58
  agno/db/json/json_db.py,sha256=YJYPJfLVldDZXx5pmflg_O8OfaXBbBNLOJHGE5qEuOY,69793
59
- agno/db/json/utils.py,sha256=ywD72LhxKl6yfmENKlOgCkw5W_XJ-oeOPSVvjsNnOy8,8062
59
+ agno/db/json/utils.py,sha256=P2RCufd7l3WxJmvxuONqrw9X0OgDSd454CtKv8L6oe8,8421
60
60
  agno/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  agno/db/migrations/manager.py,sha256=x7jH5UBFFqoUbFETBM94pgNSt9L-rRVlNvUyqHVQ8GM,9635
62
62
  agno/db/migrations/v1_to_v2.py,sha256=gj8deaEWUxOr0qJyMfjOpV3LxEh-otOSOxDckeUq0qU,24938
@@ -71,31 +71,31 @@ agno/db/mysql/__init__.py,sha256=LYeR17sORN-i8lFH7Sfk-THwEcQZP79_WHmpaBj9R7Y,130
71
71
  agno/db/mysql/async_mysql.py,sha256=LvMhEm6XH4ks_PQkL8K2zoQ1vf8KACO_4XLwYDf4xOE,124498
72
72
  agno/db/mysql/mysql.py,sha256=wGDrX6bnzU3C3vrVtnRddzS2uvc_ZLWVooVFvVIRCLc,122344
73
73
  agno/db/mysql/schemas.py,sha256=_4p2IWt0zVq-fHuxFhEpWLWxlp3QPKk8xtNMiB1TNOY,9067
74
- agno/db/mysql/utils.py,sha256=VuITsLMo6EmdZWBdssPYMkpWXNTL6xbvNXyaosdR2m0,17251
74
+ agno/db/mysql/utils.py,sha256=wo-QamkH6dOBmCv1tsY5yp-0L7ca2CD2Yj9BpqpcLhs,17799
75
75
  agno/db/postgres/__init__.py,sha256=Ojk00nTCzQFiH2ViD7KIBjgpkTKLRNPCwWnuXMKtNXY,154
76
76
  agno/db/postgres/async_postgres.py,sha256=e0BEMYbQUYEN_TVH9TbvASaocarGQJB_JvCxw5Fvp_s,108192
77
77
  agno/db/postgres/postgres.py,sha256=_-MeYJIvS7ddPpx3o3ETdiCPDQsv8atXmFf531htzPY,118730
78
78
  agno/db/postgres/schemas.py,sha256=G0BRG9GcUcO43-TU52nKSEog8v3tdJNwIhEjts9dCns,8405
79
- agno/db/postgres/utils.py,sha256=2ThhXeHpktxSPSX-q_lh2-9Jn6_9sX9yQzEDQPC0v7Q,15474
79
+ agno/db/postgres/utils.py,sha256=MeO16Wy7hf-rnm7gIxPmT0SzuDSZlXll0i0AJdWLHS8,16022
80
80
  agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
81
81
  agno/db/redis/redis.py,sha256=qq3L43axf9ftp0HFS3HHD9kEsy2qOisONOzg60Lt6cg,82232
82
82
  agno/db/redis/schemas.py,sha256=90rDTGUyN1kYZ2KgeFjyOu1SwqYoTc1ErePxGqFlbj0,5217
83
- agno/db/redis/utils.py,sha256=vQpLI-V442B6m0q_l8IVEJctLD4P-kawbCm5A_Fnotg,11326
83
+ agno/db/redis/utils.py,sha256=09FLk3vT2Y7mb-h4hoio7SHMJ1IZpxhNergaAVs3u6E,11766
84
84
  agno/db/schemas/__init__.py,sha256=g72Zr5_nm00yXHStv4pf9PG9bGLKXEK7Av6YQtrDbCQ,147
85
85
  agno/db/schemas/culture.py,sha256=w4azKAVLf5X4xyRUFXMIEq0CA0pnyeN03W3eMpqScxo,4342
86
86
  agno/db/schemas/evals.py,sha256=dCoA-bQRjKR2cZbbLmjLFWMZ1HEcfxcEfgDrO3K59Sc,824
87
87
  agno/db/schemas/knowledge.py,sha256=qVL6jEdaUG92WJw70-FrA7atetPqrpZnLYkYZDuiYho,1227
88
- agno/db/schemas/memory.py,sha256=dA7It1cN60dId-GpowmKTORy4Q6r9L49ZpGnnZkXmds,2126
88
+ agno/db/schemas/memory.py,sha256=soOeuQgLYHng0qZxzrRHf1lN574IW55lXGP403Qn1oY,2078
89
89
  agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
91
91
  agno/db/singlestore/schemas.py,sha256=gnCpoRAztbPiZOCfx9MGBx1sySijwogajSjxIeGpsaA,8923
92
92
  agno/db/singlestore/singlestore.py,sha256=C_QkbKPfdrz8ZDtAS-FXpAqJXIM_EsdvmiC5HUD0MN8,119653
93
- agno/db/singlestore/utils.py,sha256=w2FVFIBpFJK6nKJVt1sgv9N-esmfpGY_8ViFRI69I2I,13677
93
+ agno/db/singlestore/utils.py,sha256=vJ6QM-wbJBzA8l5ULYbJ5KLB9c3-GZqtb0NWdy5gg2c,14225
94
94
  agno/db/sqlite/__init__.py,sha256=09V3i4y0-tBjt60--57ivZ__SaaS67GCsDT4Apzv-5Y,138
95
95
  agno/db/sqlite/async_sqlite.py,sha256=KnuED3PcaV7IBKzuWCEvqfVjXlns1xvgYgU5tj1vQjs,123816
96
96
  agno/db/sqlite/schemas.py,sha256=1lrIFWEhXYZJIlQYEnOl3XLp3UfsE5ILj2HUPmOf3cg,8265
97
97
  agno/db/sqlite/sqlite.py,sha256=o2d0njj7Ojwjio6D49aziJnwEcDm5iq8wf1DScG4MpU,120967
98
- agno/db/sqlite/utils.py,sha256=sgp-KR7A5naTqTORHYHyP_21hG9LffOzCgqbx5S8RfE,15171
98
+ agno/db/sqlite/utils.py,sha256=PZp-g4oUf6Iw1kuDAmOpIBtfyg4poKiG_DxXP4EonFI,15721
99
99
  agno/db/surrealdb/__init__.py,sha256=C8qp5-Nx9YnSmgKEtGua-sqG_ntCXONBw1qqnNyKPqI,75
100
100
  agno/db/surrealdb/metrics.py,sha256=oKDRyjRQ6KR3HaO8zDHQLVMG7-0NDkOFOKX5I7mD5FA,10336
101
101
  agno/db/surrealdb/models.py,sha256=IUIpdd50MxznOB-hMstEcEHHVlWhll2FNQqVhM-9zIU,12889
@@ -232,7 +232,7 @@ agno/models/internlm/internlm.py,sha256=tzCgFhNMztR4r93kIE2BEAOzqqqx3P7hLM5G-Dnc
232
232
  agno/models/langdb/__init__.py,sha256=ubh5nDcxyH33_ONwsmY4tWQz5esRwRjHBe68u9hdAIM,45
233
233
  agno/models/langdb/langdb.py,sha256=6Wbk7v1M_kAMfmx01YXms63beGKtHM1rAaPmLPN8yLI,2142
234
234
  agno/models/litellm/__init__.py,sha256=5e4yHqepF9-fOE0DMDIKnH6psFV1OcRgfAD5BaoVRgI,353
235
- agno/models/litellm/chat.py,sha256=LxYDNwssDsB9TPcYb0sVoM90XsD9tFVlRfYzdpSwpH0,20833
235
+ agno/models/litellm/chat.py,sha256=lJ9mu3C8gjA9L27VQziWfEAvFkViDnKzXIQG29bFsf4,21223
236
236
  agno/models/litellm/litellm_openai.py,sha256=npMCj-W76g4NOqq7n89gQjKqchw69ma_kTElD0r_cI0,1456
237
237
  agno/models/llama_cpp/__init__.py,sha256=oxOZfqEcOdcB74VLwOTO6bPmXHHA88uaeJO-IkXgr8A,84
238
238
  agno/models/llama_cpp/llama_cpp.py,sha256=tWIF0TQH-sK29xCrTe7oy0SjSC-FlOmwmPL1d5IVMPM,673
@@ -284,7 +284,7 @@ agno/os/config.py,sha256=z0wNd576_qsQGsQWsMRIZzjknDVEPlKWF_pHE6VBUyY,3538
284
284
  agno/os/managers.py,sha256=j7Y07yEsW03iKEy1itb3sq3PXcJS3ipJbK4rTqk6_Ow,13086
285
285
  agno/os/mcp.py,sha256=TNkq9y20RBrCFx3iIk1MPrct6gCTYV0KMPS_1EwNghs,31393
286
286
  agno/os/router.py,sha256=Xx3iwxSUSRDEXsQoq5mFuz9MlZIx2YYOkod7RQAaLzw,12348
287
- agno/os/schema.py,sha256=aKkziPewY_HCHrDzRjx0eG0jurS3lzYnHHyFc5WluPw,30357
287
+ agno/os/schema.py,sha256=ag6NmJcaAuSUyxio25w4tNBEzqWhHjVxRj6PhB-552E,30535
288
288
  agno/os/scopes.py,sha256=gH3Obo618gHKt5h-N1OkWqB4UPl2LZygd7GW7pKzdAc,15696
289
289
  agno/os/settings.py,sha256=gS9pN1w21wsa5XqDkK-RfQmroAaqoX4KZBfRuhUevkM,1556
290
290
  agno/os/utils.py,sha256=CP-ZjCJSpdYDq3PNMbNbuiGZSycJyX_RpOrW37J-J-U,34782
@@ -321,13 +321,13 @@ agno/os/routers/evals/schemas.py,sha256=xkbOSOX1scmvN782CVqv_MrsiXlxAqXA_esjmy5K
321
321
  agno/os/routers/evals/utils.py,sha256=cpM8_YAtF40ZdE7D0Ivl2EsQ8WU5C4YvYRQh6yK3nto,8410
322
322
  agno/os/routers/knowledge/__init__.py,sha256=ZSqMQ8X7C_oYn8xt7NaYlriarWUpHgaWDyHXOWooMaU,105
323
323
  agno/os/routers/knowledge/knowledge.py,sha256=6mv9lUs2xhdvqVV5_dDlAeamA22JAUMW2O8NoJE0d4o,49859
324
- agno/os/routers/knowledge/schemas.py,sha256=GUr5RsRbI7K3qrrOlGVfW0Kf7XO6HjMviMW6nEl6qf8,8847
324
+ agno/os/routers/knowledge/schemas.py,sha256=Uh7v-vGT8lMOoFc2Zh0PFMsPNenHIdDVF1cyKIp-uIU,8877
325
325
  agno/os/routers/memory/__init__.py,sha256=9hrYFc1dkbsLBqKfqyfioQeLX9TTbLrJx6lWDKNNWbc,93
326
326
  agno/os/routers/memory/memory.py,sha256=ZKKR8SxEo4mjyGVZ11qy4BbnYXI-rnemAvj_N4nGYfc,32830
327
- agno/os/routers/memory/schemas.py,sha256=zJ2_ITD3Pz3-Oidy8qItcOkfLy0mbamBQDBlVjzhM1A,4152
327
+ agno/os/routers/memory/schemas.py,sha256=WQ7OkJnRIMTis5VkbR6wPIG9X_srBlp4jfmYBW0Eqi8,4673
328
328
  agno/os/routers/metrics/__init__.py,sha256=Uw6wWEikLpF5hHxBkHtFyaTuz7OUerGYWk0JW7teUGQ,97
329
329
  agno/os/routers/metrics/metrics.py,sha256=L947err_dLzp5EoRHnh_tIglHxYnOJa76koLVed595o,9540
330
- agno/os/routers/metrics/schemas.py,sha256=1YsD01b1-mtJlh5HhW9zvPYok9Q2nPpDhN-gJ6B88sU,2674
330
+ agno/os/routers/metrics/schemas.py,sha256=1zE3Mfi15SNfF_Hy3r_tLK86E-Jox_qWzSG0oPswFQA,2706
331
331
  agno/os/routers/session/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
332
332
  agno/os/routers/session/session.py,sha256=DOwW6pF1QRdd5V2QqZD-woBq6FDIfYc_0-9pWVmqTVQ,57752
333
333
  agno/os/routers/teams/__init__.py,sha256=j2aPA09mwwn_vOG8p2uX0sDR-qNbLLRlPlprqM789NY,88
@@ -354,14 +354,18 @@ agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
354
354
  agno/reasoning/vertexai.py,sha256=CCdY-ygLEdQLQuo2D-dYC0aDr4FJ9BqtkCkk2U2Ftfs,6174
355
355
  agno/remote/__init__.py,sha256=zgDS3cO_6VavICojsmG8opJ49wLwydftGE6i6_yPDTo,66
356
356
  agno/remote/base.py,sha256=059JJXC9TcxnkgqGjeHLnodjeIMEqyZ6UyKxJh-ye0c,19545
357
- agno/run/__init__.py,sha256=DFjpUomTzHvIDQQE_PUfp4oJM-7Ti8h8a_Fe5Kr8rjM,98
357
+ agno/run/__init__.py,sha256=GZwloCe48rEAjkb_xOJ7piOjICmHawiR1d4SqBtUd-k,222
358
358
  agno/run/agent.py,sha256=U678dBfis4W-9r1_YdgqEjo1LhmWJv2YH17CqlB0JvE,29771
359
359
  agno/run/base.py,sha256=SqiprPcwBbjVRxSi9zlMqPsN6QDh0UHMvodnRBZnH5c,9814
360
- agno/run/cancel.py,sha256=yoSj3fnx8D7Gf-fSngVIgd3GOp3tRaDhHH_4QeHDoAk,2667
360
+ agno/run/cancel.py,sha256=Tyxg4lxwSvO2wSZDG4OF82ORQU6MYBu94YLqrEnK09Y,3019
361
361
  agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
362
362
  agno/run/requirement.py,sha256=5M_L-3nKLPDS0tUxTbFNvgXgWfWUyEohQz_3bxNc39M,6817
363
363
  agno/run/team.py,sha256=mbSt4lCjTVGD6d9C3BmDGC8Lam9Wmvm3Lql6GZEY3hs,28826
364
364
  agno/run/workflow.py,sha256=PMpOP7i2jl47kIMtw_rxY4U2S-Egxlvxe7QegGFihxA,25134
365
+ agno/run/cancellation_management/__init__.py,sha256=tA_u4MeG2dgm8cWJRXy0X6HF4mv6Kc55gykoSnuMPf0,406
366
+ agno/run/cancellation_management/base.py,sha256=nNh5yqfjp4Bpn03RE7T2jzLbzvY007ckzGhd-XKmZpk,2408
367
+ agno/run/cancellation_management/in_memory_cancellation_manager.py,sha256=p04IxrXG8FcHG3X-YS-ApNAdVj8kY1ZKBeUavdypZjM,3956
368
+ agno/run/cancellation_management/redis_cancellation_manager.py,sha256=t2wj3O8MfH2J4_73Hup9o1GZAZANm1GrVqWCPm5aI30,9271
365
369
  agno/session/__init__.py,sha256=p6eqzWcLSHiMex2yZvkwv2yrFUNdGs21TGMS49xrEC4,376
366
370
  agno/session/agent.py,sha256=8vVtwwUC5moGWdRcG99Ik6Ay7gbFRrPPnT1ncOUFQIg,10365
367
371
  agno/session/summary.py,sha256=9JnDyQyggckd3zx6L8Q5f-lglZvrFQxvPjGU8gLCgR4,10292
@@ -369,7 +373,7 @@ agno/session/team.py,sha256=J7QIy8oCi2_eWs0ToDs7VHHfeFQI34cF4i1Yx7Tbv_M,13388
369
373
  agno/session/workflow.py,sha256=nPHnh1N0SJby5JRjysCUI-kTDCelQMFfqosEnnLzPIg,19690
370
374
  agno/team/__init__.py,sha256=7oYaEB1iTGbmajpgSd3tjCQAQo6t0PIE8ZT1m5MKTm0,905
371
375
  agno/team/remote.py,sha256=mugWS9b1uTxn7HAi-YxGFvEPa7uB9Q-T00KTsqenEAA,10694
372
- agno/team/team.py,sha256=YLK9t5aQNwSd4WtkkwJj0-zuiO-kpd2FWD2XHDNph7E,425108
376
+ agno/team/team.py,sha256=6SuyLER_sdMVBRGYbhX0yvgtzORYUirpB4ZoVuy6NKI,433456
373
377
  agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
374
378
  agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
375
379
  agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
@@ -534,7 +538,7 @@ agno/utils/pprint.py,sha256=aTg3gfib3x3VK3E-xJrbBeufK7s77ebTVtWoa2VrYgU,7762
534
538
  agno/utils/prompts.py,sha256=wQU85SshxCDvZL1vD4rMWSnLhjQZCLXBL3HpOpiirXo,5811
535
539
  agno/utils/reasoning.py,sha256=pW5y674EjJ-R6IX8Fyxi_vN9xLG5dLkujPpcfSVL1jU,3862
536
540
  agno/utils/remote.py,sha256=MG-Dj2nzTvdOZke3T-wr9UcsCMIJPcTS-BP8_FSv6gc,688
537
- agno/utils/response.py,sha256=VfMfRK_m3teMjoEbZaq2nFt5hSmBYrWFaf0VSEuol58,7218
541
+ agno/utils/response.py,sha256=6gfo3NdpzQJx0W8Ts4HBbJ69ZqqHuM7pJi1RD4zWF6g,6870
538
542
  agno/utils/response_iterator.py,sha256=MgtadrOuMcw2vJcVvhJdMKRzpVddhLWUIkGFbBz7ZCQ,379
539
543
  agno/utils/safe_formatter.py,sha256=zLrW6O-nGUZvXoDkZOTgVpjeUFTmMUj8pk3FLvW_XjM,809
540
544
  agno/utils/serialize.py,sha256=XvQA_KSkVd5qI1QuZwdQpCsl1IOKddFu52Jl6WQASqU,904
@@ -604,7 +608,7 @@ agno/vectordb/surrealdb/__init__.py,sha256=4GIpJZH0Hb42s1ZR0VS5BQ5RhTAaolmS-_rAI
604
608
  agno/vectordb/surrealdb/surrealdb.py,sha256=INhIwK9UdnHmt3qOo5q9h9zzSPs3XVjnuSPVrAfU2fc,24698
605
609
  agno/vectordb/upstashdb/__init__.py,sha256=set3Sx1F3ZCw0--0AeC036EAS0cC1xKsvQUK5FyloFA,100
606
610
  agno/vectordb/upstashdb/upstashdb.py,sha256=AAalti8wCNGikjTE_mDLVQmyuPiNVrY_KFsHiYsGe3M,29307
607
- agno/vectordb/weaviate/__init__.py,sha256=rxUek7sFnbohq4n676hOWxnvqhmDNCKg7F9-jFQSDII,212
611
+ agno/vectordb/weaviate/__init__.py,sha256=CF56_hm_DJq2JOYyzKwyrnGaSJoAFWHDvqvx5Z2SSI0,212
608
612
  agno/vectordb/weaviate/index.py,sha256=y4XYPRZFksMfrrF85B4hn5AtmXM4SH--4CyLo27EHgM,253
609
613
  agno/vectordb/weaviate/weaviate.py,sha256=cyw1r1a0YyrrJliIk7gZ43GBTlscx4ypV3LhUUom2zc,40638
610
614
  agno/workflow/__init__.py,sha256=XS5WhNIReuf77Ahr5OCUYlpEFZLMRpqBo1GQPVi7L4k,679
@@ -617,9 +621,9 @@ agno/workflow/router.py,sha256=HQDOnErjtiQdY_EskJBV_mZq_k6d1gH6JJPIM2Yfelw,32016
617
621
  agno/workflow/step.py,sha256=voTmWWihLKDAMeLgYoie96KLCiVpxPFrZoFHEMhA6QM,75046
618
622
  agno/workflow/steps.py,sha256=rbfue2M4qYEkgHueojCY1-cB4i1MFjO-jX6uTxyoKwk,27118
619
623
  agno/workflow/types.py,sha256=t4304WCKB19QFdV3ixXZICcU8wtBza4EBCIz5Ve6MSQ,18035
620
- agno/workflow/workflow.py,sha256=rhSqepsIsVBPrNEOMNM70CPJYMl54-hFtwwfmhybGaU,195597
621
- agno-2.3.19.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
622
- agno-2.3.19.dist-info/METADATA,sha256=IlVLTueDImpx8R4_Yy0QS2U-eWADRaSW5lkjHCD9H3E,31588
623
- agno-2.3.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
624
- agno-2.3.19.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
625
- agno-2.3.19.dist-info/RECORD,,
624
+ agno/workflow/workflow.py,sha256=MPBPGuh-9snFx_d83zJXkbMaUtEMqhwJQYNpKOp4p1Q,195871
625
+ agno-2.3.20.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
626
+ agno-2.3.20.dist-info/METADATA,sha256=Joi0h5Zuq0UdML8O9onH4pOFL7rAhTaYTNw_GVU8lv0,31557
627
+ agno-2.3.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
628
+ agno-2.3.20.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
629
+ agno-2.3.20.dist-info/RECORD,,
File without changes