agno 2.0.3__py3-none-any.whl → 2.0.5__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 +229 -164
- agno/db/dynamo/dynamo.py +8 -0
- agno/db/firestore/firestore.py +8 -0
- agno/db/gcs_json/gcs_json_db.py +9 -0
- agno/db/json/json_db.py +8 -0
- agno/db/migrations/v1_to_v2.py +191 -23
- agno/db/mongo/mongo.py +68 -0
- agno/db/mysql/mysql.py +13 -3
- agno/db/mysql/schemas.py +27 -27
- agno/db/postgres/postgres.py +19 -11
- agno/db/redis/redis.py +6 -0
- agno/db/singlestore/schemas.py +1 -1
- agno/db/singlestore/singlestore.py +8 -1
- agno/db/sqlite/sqlite.py +12 -3
- agno/integrations/discord/client.py +1 -0
- agno/knowledge/knowledge.py +92 -66
- agno/knowledge/reader/reader_factory.py +7 -3
- agno/knowledge/reader/web_search_reader.py +12 -6
- agno/models/base.py +2 -2
- agno/models/message.py +109 -0
- agno/models/openai/chat.py +3 -0
- agno/models/openai/responses.py +12 -0
- agno/models/response.py +5 -0
- agno/models/siliconflow/__init__.py +5 -0
- agno/models/siliconflow/siliconflow.py +25 -0
- agno/os/app.py +164 -41
- agno/os/auth.py +24 -14
- agno/os/interfaces/agui/utils.py +98 -134
- agno/os/router.py +128 -55
- agno/os/routers/evals/utils.py +9 -9
- agno/os/routers/health.py +25 -0
- agno/os/routers/home.py +52 -0
- agno/os/routers/knowledge/knowledge.py +11 -11
- agno/os/routers/session/session.py +24 -8
- agno/os/schema.py +29 -2
- agno/os/utils.py +0 -8
- agno/run/agent.py +3 -3
- agno/run/team.py +3 -3
- agno/run/workflow.py +64 -10
- agno/session/team.py +1 -0
- agno/team/team.py +189 -94
- agno/tools/duckduckgo.py +15 -11
- agno/tools/googlesearch.py +1 -1
- agno/tools/mem0.py +11 -17
- agno/tools/memory.py +34 -6
- agno/utils/common.py +90 -1
- agno/utils/streamlit.py +14 -8
- agno/utils/string.py +32 -0
- agno/utils/tools.py +1 -1
- agno/vectordb/chroma/chromadb.py +8 -2
- agno/workflow/step.py +115 -16
- agno/workflow/workflow.py +16 -13
- {agno-2.0.3.dist-info → agno-2.0.5.dist-info}/METADATA +6 -5
- {agno-2.0.3.dist-info → agno-2.0.5.dist-info}/RECORD +57 -54
- agno/knowledge/reader/url_reader.py +0 -128
- {agno-2.0.3.dist-info → agno-2.0.5.dist-info}/WHEEL +0 -0
- {agno-2.0.3.dist-info → agno-2.0.5.dist-info}/licenses/LICENSE +0 -0
- {agno-2.0.3.dist-info → agno-2.0.5.dist-info}/top_level.txt +0 -0
agno/workflow/workflow.py
CHANGED
|
@@ -51,6 +51,7 @@ from agno.run.workflow import (
|
|
|
51
51
|
)
|
|
52
52
|
from agno.session.workflow import WorkflowSession
|
|
53
53
|
from agno.team.team import Team
|
|
54
|
+
from agno.utils.common import is_typed_dict, validate_typed_dict
|
|
54
55
|
from agno.utils.log import (
|
|
55
56
|
log_debug,
|
|
56
57
|
log_warning,
|
|
@@ -217,14 +218,18 @@ class Workflow:
|
|
|
217
218
|
|
|
218
219
|
def _validate_input(
|
|
219
220
|
self, input: Optional[Union[str, Dict[str, Any], List[Any], BaseModel, List[Message]]]
|
|
220
|
-
) -> Optional[BaseModel]:
|
|
221
|
+
) -> Optional[Union[str, List, Dict, Message, BaseModel]]:
|
|
221
222
|
"""Parse and validate input against input_schema if provided"""
|
|
222
223
|
if self.input_schema is None:
|
|
223
|
-
return
|
|
224
|
+
return input # Return input unchanged if no schema is set
|
|
224
225
|
|
|
225
226
|
if input is None:
|
|
226
227
|
raise ValueError("Input required when input_schema is set")
|
|
227
228
|
|
|
229
|
+
# Handle Message objects - extract content
|
|
230
|
+
if isinstance(input, Message):
|
|
231
|
+
input = input.content # type: ignore
|
|
232
|
+
|
|
228
233
|
# If input is a string, convert it to a dict
|
|
229
234
|
if isinstance(input, str):
|
|
230
235
|
import json
|
|
@@ -238,8 +243,6 @@ class Workflow:
|
|
|
238
243
|
if isinstance(input, BaseModel):
|
|
239
244
|
if isinstance(input, self.input_schema):
|
|
240
245
|
try:
|
|
241
|
-
# Re-validate to catch any field validation errors
|
|
242
|
-
input.model_validate(input.model_dump())
|
|
243
246
|
return input
|
|
244
247
|
except Exception as e:
|
|
245
248
|
raise ValueError(f"BaseModel validation failed: {str(e)}")
|
|
@@ -250,8 +253,13 @@ class Workflow:
|
|
|
250
253
|
# Case 2: Message is a dict
|
|
251
254
|
elif isinstance(input, dict):
|
|
252
255
|
try:
|
|
253
|
-
|
|
254
|
-
|
|
256
|
+
# Check if the schema is a TypedDict
|
|
257
|
+
if is_typed_dict(self.input_schema):
|
|
258
|
+
validated_dict = validate_typed_dict(input, self.input_schema)
|
|
259
|
+
return validated_dict
|
|
260
|
+
else:
|
|
261
|
+
validated_model = self.input_schema(**input)
|
|
262
|
+
return validated_model
|
|
255
263
|
except Exception as e:
|
|
256
264
|
raise ValueError(f"Failed to parse dict into {self.input_schema.__name__}: {str(e)}")
|
|
257
265
|
|
|
@@ -1924,10 +1932,7 @@ class Workflow:
|
|
|
1924
1932
|
) -> Union[WorkflowRunOutput, Iterator[WorkflowRunOutputEvent]]:
|
|
1925
1933
|
"""Execute the workflow synchronously with optional streaming"""
|
|
1926
1934
|
|
|
1927
|
-
|
|
1928
|
-
if validated_input is not None:
|
|
1929
|
-
input = validated_input
|
|
1930
|
-
|
|
1935
|
+
input = self._validate_input(input)
|
|
1931
1936
|
if background:
|
|
1932
1937
|
raise RuntimeError("Background execution is not supported for sync run()")
|
|
1933
1938
|
|
|
@@ -2059,9 +2064,7 @@ class Workflow:
|
|
|
2059
2064
|
) -> Union[WorkflowRunOutput, AsyncIterator[WorkflowRunOutputEvent]]:
|
|
2060
2065
|
"""Execute the workflow synchronously with optional streaming"""
|
|
2061
2066
|
|
|
2062
|
-
|
|
2063
|
-
if validated_input is not None:
|
|
2064
|
-
input = validated_input
|
|
2067
|
+
input = self._validate_input(input)
|
|
2065
2068
|
|
|
2066
2069
|
websocket_handler = None
|
|
2067
2070
|
if websocket:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.5
|
|
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
|
|
@@ -366,6 +366,7 @@ Dynamic: license-file
|
|
|
366
366
|
<div align="center">
|
|
367
367
|
<a href="https://docs.agno.com">📚 Documentation</a> |
|
|
368
368
|
<a href="https://docs.agno.com/examples/introduction">💡 Examples</a> |
|
|
369
|
+
<a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github&utm_content=header">🏠 Website</a> |
|
|
369
370
|
<a href="https://github.com/agno-agi/agno/stargazers">🌟 Star Us</a>
|
|
370
371
|
</div>
|
|
371
372
|
|
|
@@ -406,14 +407,14 @@ If you're new to Agno, follow our [quickstart](https://docs.agno.com/introductio
|
|
|
406
407
|
|
|
407
408
|
After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
|
|
408
409
|
|
|
409
|
-
## Documentation, Community & More
|
|
410
|
+
## Documentation, Community & More Examples
|
|
410
411
|
|
|
411
412
|
- Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
|
|
412
413
|
- Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
|
|
413
414
|
- Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
|
|
414
415
|
- Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
|
|
415
416
|
|
|
416
|
-
## Setup
|
|
417
|
+
## Setup Your Coding Agent to Use Agno
|
|
417
418
|
|
|
418
419
|
For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file.
|
|
419
420
|
|
|
@@ -441,7 +442,7 @@ At Agno, we're obsessed with performance. Why? because even simple AI workflows
|
|
|
441
442
|
|
|
442
443
|
While an Agent's run-time is bottlenecked by inference, we must do everything possible to minimize execution time, reduce memory usage, and parallelize tool calls. These numbers may seem trivial at first, but our experience shows that they add up even at a reasonably small scale.
|
|
443
444
|
|
|
444
|
-
### Instantiation
|
|
445
|
+
### Instantiation Time
|
|
445
446
|
|
|
446
447
|
Let's measure the time it takes for an Agent with 1 tool to start up. We'll run the evaluation 1000 times to get a baseline measurement.
|
|
447
448
|
|
|
@@ -469,7 +470,7 @@ Agno is on the left, notice how it finishes before LangGraph gets 1/2 way throug
|
|
|
469
470
|
|
|
470
471
|
https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
|
|
471
472
|
|
|
472
|
-
### Memory
|
|
473
|
+
### Memory Usage
|
|
473
474
|
|
|
474
475
|
To measure memory usage, we use the `tracemalloc` library. We first calculate a baseline memory usage by running an empty function, then run the Agent 1000x times and calculate the difference. This gives a (reasonably) isolated measurement of the memory usage of the Agent.
|
|
475
476
|
|
|
@@ -4,7 +4,7 @@ agno/exceptions.py,sha256=HWuuNFS5J0l1RYJsdUrSx51M22aFEoh9ltoeonXBoBw,2891
|
|
|
4
4
|
agno/media.py,sha256=bWnJb2ns4gN-do73iHvslZPn9uNbH_Ty8XgOiOvSFfU,13932
|
|
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=2YbyDCSXkH2pjO1IGobEzWnkZ7Fkkmcz3l6eiHTxGRU,325861
|
|
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,38 +31,38 @@ agno/db/__init__.py,sha256=bfd_tpKsIKCjZosnFqID26VoWqy88v8gzkf9kLHToY4,625
|
|
|
31
31
|
agno/db/base.py,sha256=POGw6M85Dwt1YD_69KbtB1iuTyrqYl4ZIWU07GO_4yc,7898
|
|
32
32
|
agno/db/utils.py,sha256=xjrbR4g2ry0HnkiQC29Ql7jRzfxrorqS4HNlswhzVcM,3478
|
|
33
33
|
agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
|
|
34
|
-
agno/db/dynamo/dynamo.py,sha256=
|
|
34
|
+
agno/db/dynamo/dynamo.py,sha256=ZIud33mQeIO7IxNFmgtUgXUE7phNkR4xJ3mTCgNgEL8,66481
|
|
35
35
|
agno/db/dynamo/schemas.py,sha256=ZqeR4QdqMVi53iz2qcs-d5Y6MDfmhHSuP7vot__hLoI,11638
|
|
36
36
|
agno/db/dynamo/utils.py,sha256=3Kwkq7FqUac6Q6BjwuzWzfyo4ANnS8FIz7_n3EEnbYo,25047
|
|
37
37
|
agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
|
|
38
|
-
agno/db/firestore/firestore.py,sha256=
|
|
38
|
+
agno/db/firestore/firestore.py,sha256=1IjBjZwHcbTiukeiTuFqM0xPVo3pJwx_EVuFlVG6vDE,56960
|
|
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=SMPSMDpYL326wv1KbqD7qHh3NACvrUk1P8DpT_PvIgI,42307
|
|
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
45
|
agno/db/in_memory/in_memory_db.py,sha256=qivtyP3ShYMuKFRadGgzbrRyaCElfm511ytiSdqPWcY,35074
|
|
46
46
|
agno/db/in_memory/utils.py,sha256=X02wny18w5uvGE3caokPbCQTG6t7OErWNPkK3Umru3s,5780
|
|
47
47
|
agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
|
|
48
|
-
agno/db/json/json_db.py,sha256=
|
|
48
|
+
agno/db/json/json_db.py,sha256=AFcNHriyosn3Tce8S2fYCUZNL9UrE-MK3DCaAQGGttM,42228
|
|
49
49
|
agno/db/json/utils.py,sha256=__c14xMdyw1AlyV7-DAGDr8YicqhfCbSS5C8OkVN2So,6658
|
|
50
50
|
agno/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
agno/db/migrations/v1_to_v2.py,sha256=
|
|
51
|
+
agno/db/migrations/v1_to_v2.py,sha256=HYLLaas9YEEbAOhzK3Sd-qBP-1YfHeeWglWsU31V584,12692
|
|
52
52
|
agno/db/mongo/__init__.py,sha256=EPa9QkGNVwnuej72LhZDCeASMXa-e0pR20jsgwa9BhY,63
|
|
53
|
-
agno/db/mongo/mongo.py,sha256=
|
|
53
|
+
agno/db/mongo/mongo.py,sha256=jOwq6agagQEkFHZykSjB_h4oItFTPoBTZZSegrOFcUg,57904
|
|
54
54
|
agno/db/mongo/schemas.py,sha256=MAhfwx7_zxKucnZpgq_YSZANaF5MqiZ6qDByhdIREk8,2054
|
|
55
55
|
agno/db/mongo/utils.py,sha256=dmVo0HGIG7IPKdCjuRDcO0ZOtyXcNkP6S2G-XBFqzZE,6906
|
|
56
56
|
agno/db/mysql/__init__.py,sha256=ohBMZ1E6ctioEF0XX5PjC4LtUQrc6lFkjsE4ojyXA8g,63
|
|
57
|
-
agno/db/mysql/mysql.py,sha256=
|
|
58
|
-
agno/db/mysql/schemas.py,sha256=
|
|
57
|
+
agno/db/mysql/mysql.py,sha256=3P6Wm69IEiYnYtuA9U-afU-S76e5OJJGVT5e98wKtiQ,70241
|
|
58
|
+
agno/db/mysql/schemas.py,sha256=2OAaX7ILykFCJBcEWH6kFXzNI8JnnYZCXClbVUoRbLc,5482
|
|
59
59
|
agno/db/mysql/utils.py,sha256=7E83u2gKOkr7lxFPGM2ucLvfJarbEtNRxOeZQhLYKzU,10066
|
|
60
60
|
agno/db/postgres/__init__.py,sha256=eEdY4emRxmBmxeZUhAYSaObgcqKdd6C9IxUSk1U0gDY,75
|
|
61
|
-
agno/db/postgres/postgres.py,sha256=
|
|
61
|
+
agno/db/postgres/postgres.py,sha256=PezXOvn7y0g4-eugNt0YUEOHeF3oBv01-mU8Mu_HyuA,69264
|
|
62
62
|
agno/db/postgres/schemas.py,sha256=adbKcMapqeXsEYeF6feWe2ja1paRzCMOkQSHHN6Psp8,5275
|
|
63
63
|
agno/db/postgres/utils.py,sha256=iaY0ZqJgzadCitxSbsRchCtBE5WeUApfIj-VbdH9MJI,9447
|
|
64
64
|
agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
|
|
65
|
-
agno/db/redis/redis.py,sha256=
|
|
65
|
+
agno/db/redis/redis.py,sha256=JntBcaerlnGUL67eUUMjqIIzhB7bldkl6NlUYJywzCk,51537
|
|
66
66
|
agno/db/redis/schemas.py,sha256=LE1NApES1ao5X770HXB7jvrk2n31KiOWAsl5Z0xMG08,3637
|
|
67
67
|
agno/db/redis/utils.py,sha256=z1pyakjlCQ_FyQUXe8pPer-pQDG70GLDOYQLNl4Oxrg,8955
|
|
68
68
|
agno/db/schemas/__init__.py,sha256=HIKc2Apyk6ENJb_Py6sgNdbl6H7eo6PD5QMTmkdJSwI,72
|
|
@@ -71,12 +71,12 @@ agno/db/schemas/knowledge.py,sha256=qVL6jEdaUG92WJw70-FrA7atetPqrpZnLYkYZDuiYho,
|
|
|
71
71
|
agno/db/schemas/memory.py,sha256=kKlJ6AWpbwz-ZJfBJieartPP0QqeeoKAXx2Ity4Yj-Y,1461
|
|
72
72
|
agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
73
|
agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
|
|
74
|
-
agno/db/singlestore/schemas.py,sha256=
|
|
75
|
-
agno/db/singlestore/singlestore.py,sha256=
|
|
74
|
+
agno/db/singlestore/schemas.py,sha256=yDXBGtswAuVxKX1_GvKIBt6IlEor2HiAbYPrwX5SSJ8,5489
|
|
75
|
+
agno/db/singlestore/singlestore.py,sha256=gYNi3k-4GYmqivoIBIB9h6FO7JdUGmyksYy3-pZ_zVg,69539
|
|
76
76
|
agno/db/singlestore/utils.py,sha256=LG0NhOx5B5oJY-Kcc_3ipNzBT1J-mBGx8TARUkRtWv8,11377
|
|
77
77
|
agno/db/sqlite/__init__.py,sha256=LocJ-suv6xpdun8HUxgbD3bTgmQArQvLJkbpb1pRGy0,67
|
|
78
78
|
agno/db/sqlite/schemas.py,sha256=-L3hmlg80PAPmfexPrWtnepSzlmZHrbyPZ754nJlVdE,5191
|
|
79
|
-
agno/db/sqlite/sqlite.py,sha256=
|
|
79
|
+
agno/db/sqlite/sqlite.py,sha256=puxKFhiriPz4TAIOKzBy2qBQY3En8AT7CwjFxTO6gZc,68187
|
|
80
80
|
agno/db/sqlite/utils.py,sha256=52FbQrmMHXicxocqbXM5B7iBGgVTSft0r_9PyckLSt0,9434
|
|
81
81
|
agno/eval/__init__.py,sha256=vCYcIbfOkT2lL8vZJ9zsea6j3byp5A-mxEb_45VaD8I,449
|
|
82
82
|
agno/eval/accuracy.py,sha256=UZmxOtVP3p3fFzby2YyjE4-Tza2MMtQiBrfhK9mJrx4,32531
|
|
@@ -85,10 +85,10 @@ agno/eval/reliability.py,sha256=kmyHthgzTeKOn_HGDSdpBlpxQ4m_vqhcAcjAjQxgKdk,1223
|
|
|
85
85
|
agno/eval/utils.py,sha256=EbpxDTgP9QGlSjU9NQi0X-tJRMMbxDmDpTedb_s-D20,3149
|
|
86
86
|
agno/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
agno/integrations/discord/__init__.py,sha256=MS08QSnegGgpDZd9LyLjK4pWIk9dXlbzgD7wB3eEVJE,88
|
|
88
|
-
agno/integrations/discord/client.py,sha256=
|
|
88
|
+
agno/integrations/discord/client.py,sha256=2IWkA-kCDsDXByKOGq2QJG6MtFsbouzNN105rsXn95A,8375
|
|
89
89
|
agno/knowledge/__init__.py,sha256=PJCt-AGKGFztzR--Ok2TNKW5QEqllZzqiI_7f8-1u80,79
|
|
90
90
|
agno/knowledge/content.py,sha256=q2bjcjDhfge_UrQAcygrv5R9ZTk7vozzKnQpatDQWRo,2295
|
|
91
|
-
agno/knowledge/knowledge.py,sha256=
|
|
91
|
+
agno/knowledge/knowledge.py,sha256=fQxDUufCT42PCMZn0M400swtbsk6nVDvT8N4IKA30X0,63384
|
|
92
92
|
agno/knowledge/types.py,sha256=zKBJC6xhy2Kl7pxWIhu7txbTAmAPIZlgMPZCbjyU11k,635
|
|
93
93
|
agno/knowledge/utils.py,sha256=_uhEFtz4p7-cIKffdj5UZ__c-u96rs2UWP6dv5HpOMk,6490
|
|
94
94
|
agno/knowledge/chunking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -129,11 +129,10 @@ agno/knowledge/reader/firecrawl_reader.py,sha256=SCbcRLkMrUb2WiC6SPuAoZULtHITa2V
|
|
|
129
129
|
agno/knowledge/reader/json_reader.py,sha256=KfDgHno_XHORIGaoA1Q2Y5M7nkcTFM9IUzWXkjVjYKQ,3245
|
|
130
130
|
agno/knowledge/reader/markdown_reader.py,sha256=HoSEkX2Svl2tEMDyzAmRNmwxsterb3i3-1-EQR6N4IU,5272
|
|
131
131
|
agno/knowledge/reader/pdf_reader.py,sha256=4xx9ErZ4oXMsn4dgde9P9xKR6wogYnUKWJF2UAjAp84,17494
|
|
132
|
-
agno/knowledge/reader/reader_factory.py,sha256=
|
|
132
|
+
agno/knowledge/reader/reader_factory.py,sha256=g-Z9axqRv1PJliPNnl77y4Qt7ElXD3fq3rbWi85A5tg,9715
|
|
133
133
|
agno/knowledge/reader/s3_reader.py,sha256=j_xBDWV9l5Uhsr88glQ0dCMS-ijvqw8gdMc1Bzfm394,3547
|
|
134
134
|
agno/knowledge/reader/text_reader.py,sha256=Vkk3mWhjyazPv77Z9PGO1nRVk8cmVkUFIWZFCVqTkOI,4444
|
|
135
|
-
agno/knowledge/reader/
|
|
136
|
-
agno/knowledge/reader/web_search_reader.py,sha256=CaHBiMtONrO4HvNbM7NkHAyjLhHVCJZEkmQ5IvITWxQ,14239
|
|
135
|
+
agno/knowledge/reader/web_search_reader.py,sha256=GMc59AxwS1zTyBEmnwzJCEbPmK4ut1eWy8EV5XXTRSk,14585
|
|
137
136
|
agno/knowledge/reader/website_reader.py,sha256=S2q9ozLPa7NCFZF8iXtIIkn9ECJF_s8b1UAJKYwGLoA,18401
|
|
138
137
|
agno/knowledge/reader/wikipedia_reader.py,sha256=rTmqpr3IpwioMMZoMx5LLoscR19x6tUhv4aU84o0quk,2085
|
|
139
138
|
agno/knowledge/reader/youtube_reader.py,sha256=z0Udminq7XkUpob129Oq_8w8SvmRVn0CkXHp2S0KUg4,2986
|
|
@@ -147,11 +146,11 @@ agno/knowledge/reranker/sentence_transformer.py,sha256=ZN4SqnMZsUhg5G7AzlONM1_Uj
|
|
|
147
146
|
agno/memory/__init__.py,sha256=XWKJU5SJObYZqEKMZ2XYwgH8-YeuWUoSRfT4dEI5HnY,101
|
|
148
147
|
agno/memory/manager.py,sha256=eCgy4KLVM97x8ypqx1-0hKubbTcwEYrOlzI-rNOinec,42219
|
|
149
148
|
agno/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
|
-
agno/models/base.py,sha256=
|
|
149
|
+
agno/models/base.py,sha256=pnApr0FSnFVJw5WQwNERz0pC2cRums-AS1xO5pyKkT4,77953
|
|
151
150
|
agno/models/defaults.py,sha256=1_fe4-ZbNriE8BgqxVRVi4KGzEYxYKYsz4hn6CZNEEM,40
|
|
152
|
-
agno/models/message.py,sha256=
|
|
151
|
+
agno/models/message.py,sha256=oIyuIhILNnV86OHYiwh_vWSduQSCVwrqQfjQ4-fqdFs,17633
|
|
153
152
|
agno/models/metrics.py,sha256=81IILXZwGmOTiWK003bi5mg4bM1f4LCWbwyamjFzp18,4500
|
|
154
|
-
agno/models/response.py,sha256
|
|
153
|
+
agno/models/response.py,sha256=Tq36PoxFrp-_OA6SZPfM7Kd858kQ6cG4BcIlDUGBlZ8,4168
|
|
155
154
|
agno/models/utils.py,sha256=PprNlVI8d8loHayjRsrc4TL38sfkFMS3EVZcF5cLXoA,669
|
|
156
155
|
agno/models/aimlapi/__init__.py,sha256=XQcFRvt4qJ8ol9nCC0XKEkVEDivdNf3nZNoJZMZ5m8M,78
|
|
157
156
|
agno/models/aimlapi/aimlapi.py,sha256=cc5Dwj38GIy31FbczHkWnKVWNKcHo6cnoeJh26rF6Ws,1455
|
|
@@ -205,9 +204,9 @@ agno/models/nvidia/nvidia.py,sha256=pnM6n4JKyPIsTegCJ1mPNxT5xWbdY_8DaA0H0QJDs7s,
|
|
|
205
204
|
agno/models/ollama/__init__.py,sha256=TIhwxG7ek3eyfoKTLoZQXwdgzcIngYKjbjSlkf2gkWE,72
|
|
206
205
|
agno/models/ollama/chat.py,sha256=QGJetMU5qL6oPrI-yFSAMt_rfjb2T0XsquGx6r3z91k,13940
|
|
207
206
|
agno/models/openai/__init__.py,sha256=OssVgQRpsriU6aJZ3lIp_jFuqvX6y78L4Fd3uTlmI3E,225
|
|
208
|
-
agno/models/openai/chat.py,sha256=
|
|
207
|
+
agno/models/openai/chat.py,sha256=4cRlD9NAFhmIC81uaun4UbERkHKGMO2nBabh5InoZLo,36444
|
|
209
208
|
agno/models/openai/like.py,sha256=wmw9PfAVqluBs4MMY73dgjelKn1yl5JDKyCRvaNFjFw,745
|
|
210
|
-
agno/models/openai/responses.py,sha256=
|
|
209
|
+
agno/models/openai/responses.py,sha256=KCFe1K5TLt81WHPQMJY5vbwRaKVZlceat5Mz49RvHJg,47106
|
|
211
210
|
agno/models/openrouter/__init__.py,sha256=ZpZhNyy_EGSXp58uC9e2iyjnxBctql7GaY8rUG-599I,90
|
|
212
211
|
agno/models/openrouter/openrouter.py,sha256=Ng-_ztpq_lghGI3tM94nsC8minKhiZ6d265c6IYXtg4,869
|
|
213
212
|
agno/models/perplexity/__init__.py,sha256=JNmOElDLwcZ9_Lk5owkEdgwmAhaH3YJ-VJqOI8rgp5c,90
|
|
@@ -216,6 +215,8 @@ agno/models/portkey/__init__.py,sha256=CjGmltOuDlYfuJgpYHmfRkKiIS9W9MH4oYaGKaNNZ
|
|
|
216
215
|
agno/models/portkey/portkey.py,sha256=6jGzRT3QscVZxKJEKWTJSUJg0cmMIGZzdRBWTcw7cIU,2983
|
|
217
216
|
agno/models/sambanova/__init__.py,sha256=3RiEVJYiYxakKsQAmv4ATEuwT4iAezvHnr5SL1gEWHo,86
|
|
218
217
|
agno/models/sambanova/sambanova.py,sha256=tRsTWeO0K-RwBvkAwtYfyuaSY_8bV2T-TFk3t8_fmMs,956
|
|
218
|
+
agno/models/siliconflow/__init__.py,sha256=TANxpIdp9mz6LV8YS9FRmy-2GfpgObrPKt19tlmBVj8,94
|
|
219
|
+
agno/models/siliconflow/siliconflow.py,sha256=9VSSET1uULe1nAoD5HDOZzQeTN9Cvzya2e7XIBt2MgY,897
|
|
219
220
|
agno/models/together/__init__.py,sha256=y6-pgHLEInpJtffjLGHkUWTDpoQNnMlKHa4fstyH6pk,82
|
|
220
221
|
agno/models/together/together.py,sha256=PXExyXjZS1PYCT5CJ_OaWYUg-AnVlayuSK0Pb-E4GKQ,912
|
|
221
222
|
agno/models/vercel/__init__.py,sha256=BYQD23dB-dmIXm8iy4S6yxXRW8xg24E9TLOgwckH674,55
|
|
@@ -225,20 +226,20 @@ agno/models/vllm/vllm.py,sha256=anBt3gshctbmda-OZJ51tOgbHHemsrSbQLMDqB39HIA,2707
|
|
|
225
226
|
agno/models/xai/__init__.py,sha256=ukcCxnCHxTtkJNA2bAMTX4MhCv1wJcbiq8ZIfYczIxs,55
|
|
226
227
|
agno/models/xai/xai.py,sha256=2BaoRSBxL2KXNqbSOv7iVmKPJIWoEPRh0er_9fu8yfc,4120
|
|
227
228
|
agno/os/__init__.py,sha256=h8oQu7vhD5RZf09jkyM_Kt1Kdq_d5kFB9gJju8QPwcY,55
|
|
228
|
-
agno/os/app.py,sha256=
|
|
229
|
-
agno/os/auth.py,sha256=
|
|
229
|
+
agno/os/app.py,sha256=FuhU3tz2CoWER4cJ4NvFT0UgUE23LHolPUlE1EBSuZI,24636
|
|
230
|
+
agno/os/auth.py,sha256=FyBtAKWtg-qSunCas5m5pK1dVEmikOSZvcCp5r25tTA,1844
|
|
230
231
|
agno/os/config.py,sha256=u4R9yazQXIcKjR3QzEIZw_XAe_OHp3xn0ff7SVkj2jA,2893
|
|
231
232
|
agno/os/mcp.py,sha256=5L0TZwInuCWM7TQ7MI_DjMWfVIIB0jxVCqaVEdR62UU,8114
|
|
232
|
-
agno/os/router.py,sha256=
|
|
233
|
-
agno/os/schema.py,sha256=
|
|
233
|
+
agno/os/router.py,sha256=Ic9M3eDS-01zpGHzn1ODR8ox-7B-xe-7xjA7VIb-OAg,61658
|
|
234
|
+
agno/os/schema.py,sha256=n1DseZbkqR_Fy1bFSoog17rljYj3RFLMxUM2r_6gwF4,38222
|
|
234
235
|
agno/os/settings.py,sha256=Cn5_8lZI8Vx1UaUYqs9h6Qp4IMDFn4f3c35uppiaMy4,1343
|
|
235
|
-
agno/os/utils.py,sha256=
|
|
236
|
+
agno/os/utils.py,sha256=_UIq19VBwIa09YP7WYLvkX3LYNJLFAtayPvNzEjLG-4,9115
|
|
236
237
|
agno/os/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
237
238
|
agno/os/interfaces/base.py,sha256=NIqG5vCQDaKczcQZWRc9tK1L1v5_wD6haXTHFViMCpo,443
|
|
238
239
|
agno/os/interfaces/agui/__init__.py,sha256=1zrGICk4roXUINwSFZfqH6sBsbHmD5KjGYVJMGg4fKQ,66
|
|
239
240
|
agno/os/interfaces/agui/agui.py,sha256=Gf05amiSeDrEfCe7KcQaEJ8Tq9JdX1D7It9hYh1k-a8,902
|
|
240
241
|
agno/os/interfaces/agui/router.py,sha256=CgHCqNwA3ktUoGmCt0PoaQPX3hJ4rcXOgtXUGQ5sPIU,4335
|
|
241
|
-
agno/os/interfaces/agui/utils.py,sha256=
|
|
242
|
+
agno/os/interfaces/agui/utils.py,sha256=VykZ-SGN5UzBpP5Pv4TmZgMsZRNPgSryO5z5ir48-N0,15892
|
|
242
243
|
agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
|
|
243
244
|
agno/os/interfaces/slack/router.py,sha256=9FvL12luuzJyTKIO_piQFayHeRAV317JEwUkZ3W9MzY,4034
|
|
244
245
|
agno/os/interfaces/slack/security.py,sha256=nMbW_0g-G_DEMbCQOD8C3PYrRPIpB2cyM6P-xS6GHYk,917
|
|
@@ -248,12 +249,14 @@ agno/os/interfaces/whatsapp/router.py,sha256=48AfJrsmtmGzG32rUrQ76E4kc9F9bSqR4ei
|
|
|
248
249
|
agno/os/interfaces/whatsapp/security.py,sha256=WOdjP886O0Wq6CRHSLAv_b39y6pjmn8opPQDSlZf4WA,1735
|
|
249
250
|
agno/os/interfaces/whatsapp/whatsapp.py,sha256=NpkenUHFhILEZgEIjbicCXq61rdaXhbx5Md1aFy7UjY,837
|
|
250
251
|
agno/os/routers/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
|
|
252
|
+
agno/os/routers/health.py,sha256=MpJrg488T0m8jU0mtoBNPiLhlR2r2gFihvyZwdQh_oc,725
|
|
253
|
+
agno/os/routers/home.py,sha256=gbqBP2-G5_aFSdsXMdc77jtanI8XSRZ8QcxKjX8_qkw,1717
|
|
251
254
|
agno/os/routers/evals/__init__.py,sha256=3s0M-Ftg5A3rFyRfTATs-0aNA6wcbj_5tCvtwH9gORQ,87
|
|
252
255
|
agno/os/routers/evals/evals.py,sha256=zjsgoTCyKbj9clPtTyg3veFFkHNxMBPtcLGuy5Zlnck,16965
|
|
253
256
|
agno/os/routers/evals/schemas.py,sha256=3Ebm3IrpX22Hg3ZatMRkozgS4TfnMki4_UbqCNtQvJ4,4800
|
|
254
|
-
agno/os/routers/evals/utils.py,sha256=
|
|
257
|
+
agno/os/routers/evals/utils.py,sha256=ZdQd5Rz7rBFwMT6Z380cP1MvJG24I_lgTfaQItvva3g,5519
|
|
255
258
|
agno/os/routers/knowledge/__init__.py,sha256=ZSqMQ8X7C_oYn8xt7NaYlriarWUpHgaWDyHXOWooMaU,105
|
|
256
|
-
agno/os/routers/knowledge/knowledge.py,sha256=
|
|
259
|
+
agno/os/routers/knowledge/knowledge.py,sha256=nCbVU2aCenIvpbmIIWjupgICO3GHbiD76q81P-lD0r8,38604
|
|
257
260
|
agno/os/routers/knowledge/schemas.py,sha256=w8XZZsWCVNmd2s_rihq2PDcgXhF7H_yO7WHU_OgY6OU,4397
|
|
258
261
|
agno/os/routers/memory/__init__.py,sha256=9hrYFc1dkbsLBqKfqyfioQeLX9TTbLrJx6lWDKNNWbc,93
|
|
259
262
|
agno/os/routers/memory/memory.py,sha256=pi_3omyZ54usHNTVBvkoPwIXBgu1p-Q7s4jYD2wUYYM,16798
|
|
@@ -262,7 +265,7 @@ agno/os/routers/metrics/__init__.py,sha256=Uw6wWEikLpF5hHxBkHtFyaTuz7OUerGYWk0JW
|
|
|
262
265
|
agno/os/routers/metrics/metrics.py,sha256=0cUsYWlknzTxeAUklswNlWOWl1m7F4NH-mfdv9ex_QY,8021
|
|
263
266
|
agno/os/routers/metrics/schemas.py,sha256=E7F31CXg9_JiBqeNZWFsZCraShqEHIDD8pDfS4E2oco,1633
|
|
264
267
|
agno/os/routers/session/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
|
|
265
|
-
agno/os/routers/session/session.py,sha256=
|
|
268
|
+
agno/os/routers/session/session.py,sha256=ajM-ehfThQTxczwkRpEpo_EkmloeRGNNYWWad6Dth18,31923
|
|
266
269
|
agno/reasoning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
267
270
|
agno/reasoning/azure_ai_foundry.py,sha256=ZCrrQ0wOEO0JNpLxFxp3crqGA9xjBqAcop9xJFlpRng,2600
|
|
268
271
|
agno/reasoning/deepseek.py,sha256=nEBIs7X-3dzkPWB_0tht5jNCtg61NBdroiaVPeT0pjw,2237
|
|
@@ -273,19 +276,19 @@ agno/reasoning/ollama.py,sha256=v-XbtBjjRUZHX9I1ZNZAAb-sv8W_a0hCgkhczz_W4HU,2564
|
|
|
273
276
|
agno/reasoning/openai.py,sha256=RkXxZZpr1KykMiDLVdz36d3WKjwlGPucR5RmhU5asHM,3089
|
|
274
277
|
agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
|
|
275
278
|
agno/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
276
|
-
agno/run/agent.py,sha256=
|
|
279
|
+
agno/run/agent.py,sha256=xZ6yZA8T7QEJLDyogbpmTz8GJlRdxznUT1pKzugnGQw,21633
|
|
277
280
|
agno/run/base.py,sha256=TvIGCos_uNrFpYe8F9j3qWE1YC4-_SW9rxnsFilJvCc,6911
|
|
278
281
|
agno/run/cancel.py,sha256=yoSj3fnx8D7Gf-fSngVIgd3GOp3tRaDhHH_4QeHDoAk,2667
|
|
279
282
|
agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
|
|
280
|
-
agno/run/team.py,sha256=
|
|
281
|
-
agno/run/workflow.py,sha256=
|
|
283
|
+
agno/run/team.py,sha256=FSgPjfTqyHSNKrrNC0tVGUo-208w27xA9k2PxLYZlfE,22172
|
|
284
|
+
agno/run/workflow.py,sha256=MuNvgDKBoNRsg81S-fw7URt_k36xIOYiL64uWDDHxSg,22624
|
|
282
285
|
agno/session/__init__.py,sha256=p6eqzWcLSHiMex2yZvkwv2yrFUNdGs21TGMS49xrEC4,376
|
|
283
286
|
agno/session/agent.py,sha256=0o8QJRc6HclC7X5MjPTSqtRIwuyjJ9un4ck9FK8lBlA,9686
|
|
284
287
|
agno/session/summary.py,sha256=2a74rDzrOGkWjrFkHQ6gf1dsZBU0_G1lgDE7b3fPaQw,8405
|
|
285
|
-
agno/session/team.py,sha256=
|
|
288
|
+
agno/session/team.py,sha256=ttb5MquVYEAtcXZNPttcBYgELu2cEwQRknveVyddr-Y,10250
|
|
286
289
|
agno/session/workflow.py,sha256=8dWTona5jen1iPYwjcvxq1XG5EQDFnd28BEjcbqzl4s,5004
|
|
287
290
|
agno/team/__init__.py,sha256=toHidBOo5M3n_TIVtIKHgcDbLL9HR-_U-YQYuIt_XtE,847
|
|
288
|
-
agno/team/team.py,sha256=
|
|
291
|
+
agno/team/team.py,sha256=AoTeRtDFI9g2MybcMFc4Z7t5HqEe9s6Xt8jCTsVhsgE,306165
|
|
289
292
|
agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
|
|
290
293
|
agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
|
|
291
294
|
agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
|
|
@@ -314,7 +317,7 @@ agno/tools/desi_vocal.py,sha256=dTeIaD7pabaZxPG9IxtQhaVpC6-A3-4hX4xIt5C7kA4,3661
|
|
|
314
317
|
agno/tools/discord.py,sha256=KkqArWVMtwpqOC-fQ7MxHAOAL9-G0CqlXUWgjQNgvOA,5819
|
|
315
318
|
agno/tools/docker.py,sha256=pk1OXW3Pk318gMoFjV2vXGA0HBc93DLs8eftOM7eRIQ,25837
|
|
316
319
|
agno/tools/duckdb.py,sha256=cYs1cgMUqZOydYC_ow65mTMSlRoAyws7k-Hx_RfVgrM,14668
|
|
317
|
-
agno/tools/duckduckgo.py,sha256=
|
|
320
|
+
agno/tools/duckduckgo.py,sha256=7IdggRnw6kuhPARRPIjWxrxGOt9TwP4W1oSILFhF_0Y,3474
|
|
318
321
|
agno/tools/e2b.py,sha256=InuGclzz93kbqWfrXSAtLvpCn-DzwuN1H26lWyUP0qQ,25958
|
|
319
322
|
agno/tools/eleven_labs.py,sha256=dYdyjxsLL9fLQBwY6_e-bPG-XgSNIB2y91avZskbg_Y,7184
|
|
320
323
|
agno/tools/email.py,sha256=YmqNngDMDfJn-TCrxGV9IxRh2xcLmxQh7NOuuKTyUwU,2359
|
|
@@ -331,7 +334,7 @@ agno/tools/gmail.py,sha256=MlLlEvxHly_2oKAZaKxXDmoHLTbWDSXcjOASGt7RpY8,28067
|
|
|
331
334
|
agno/tools/google_bigquery.py,sha256=j0c14CgGK8KvD7eEirsdAx7RSwcfMheugn84ySq6miU,4483
|
|
332
335
|
agno/tools/google_maps.py,sha256=AqPEIt4u6B2kQtzOnL5PH3RXoefCfjT_Uvm3coAqzaY,9513
|
|
333
336
|
agno/tools/googlecalendar.py,sha256=s8BPKvDZGeLD2idlQG-vqDqVpza6PupF5AzAElnAK_M,27457
|
|
334
|
-
agno/tools/googlesearch.py,sha256=
|
|
337
|
+
agno/tools/googlesearch.py,sha256=xRuaEqn7N6JIQC6z9jFuA0Kdtoe5MafGqRMtZ8jW2AQ,3566
|
|
335
338
|
agno/tools/googlesheets.py,sha256=Xb5y5ka_K3T-ZlYs-aVCl0RC5NFy3GOh7R8SGUb3i-o,14911
|
|
336
339
|
agno/tools/hackernews.py,sha256=h5w-L5FkGGMAHr6Jjez6164-UYZ_2r2qFAzwMrKLdRM,2776
|
|
337
340
|
agno/tools/jina.py,sha256=xa0yxcxsSZ1-BzxO3PJKNWnWrv64DxbpvRHTPFXWhC4,4036
|
|
@@ -342,9 +345,9 @@ agno/tools/linkup.py,sha256=EzX4_ARW96DkFe1IXAFlPQI5rdhhdhmNTX1tB5IVFWs,2123
|
|
|
342
345
|
agno/tools/local_file_system.py,sha256=wWyhM5-lqDgDO_YNzRA8ekG-m2n89k8fWr8M1BWiQWo,3157
|
|
343
346
|
agno/tools/lumalab.py,sha256=6WnZXbThKY2jL9zLswq1PVsbFm2jz81qshWqBZi59oo,6808
|
|
344
347
|
agno/tools/mcp.py,sha256=Cdeo9xI1nBnEWOytvWCzka9oiMi7_lPaVcNBWS1uQdw,25396
|
|
345
|
-
agno/tools/mem0.py,sha256=
|
|
348
|
+
agno/tools/mem0.py,sha256=5W5pZwJmBTt-_l4nvBdNQHavXFSKV9mVdJg5aso4JBI,7680
|
|
346
349
|
agno/tools/memori.py,sha256=VCZmDFCyp_7c1jPA3dm3OBQHYNZNZ-AhEHBmNyKmIAU,14691
|
|
347
|
-
agno/tools/memory.py,sha256=
|
|
350
|
+
agno/tools/memory.py,sha256=vpMoKtCqs3m6vkuqmZ4fW9IRf1OhXHQGGaq3exJK0Xo,18449
|
|
348
351
|
agno/tools/mlx_transcribe.py,sha256=kuiYZAM5ZAdkiOfFdbGJsCb0gacnJRtSTFzuX8eWGLw,6379
|
|
349
352
|
agno/tools/models_labs.py,sha256=UrjuEOfsXv92ZYsnQJGLQdiVQiRLK4q0CjITbtQ_u7k,7488
|
|
350
353
|
agno/tools/moviepy_video.py,sha256=ssSIOO16HcdCqZEYy38TWM5c6_ZOnCw-3ZU3kzuM15c,12888
|
|
@@ -409,7 +412,7 @@ agno/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
409
412
|
agno/utils/audio.py,sha256=kdPMr_wYh-NyxQ-U57hyulK0Y7iIkuVinL9AQ7w64EU,1455
|
|
410
413
|
agno/utils/certs.py,sha256=Dtqmcwngq6b-27gN7Zsmo9lKlMPYd70UNexLMqpX3BE,683
|
|
411
414
|
agno/utils/code_execution.py,sha256=JAzcsuUJVO8ZVcD9AgX_O9waBegjhbrHkQZp-YZGsdA,415
|
|
412
|
-
agno/utils/common.py,sha256=
|
|
415
|
+
agno/utils/common.py,sha256=EJaERgzrJnin1i0Aorv0Sf5y8AfMQWM-8yYhuYtD_4Q,4445
|
|
413
416
|
agno/utils/dttm.py,sha256=sk7olzbUlMl8ibAGx24sxoP0DGBCnH81VQRYjqIcpDg,289
|
|
414
417
|
agno/utils/enum.py,sha256=wDHnruIf8cQU-_QdryY9LBugPCrlj-nOabQuEFnmeYM,753
|
|
415
418
|
agno/utils/env.py,sha256=o8OwKhx78vi8MaXPes10mXejmJ13CqAh7ODKMS1pmcM,438
|
|
@@ -435,11 +438,11 @@ agno/utils/response.py,sha256=VfMfRK_m3teMjoEbZaq2nFt5hSmBYrWFaf0VSEuol58,7218
|
|
|
435
438
|
agno/utils/response_iterator.py,sha256=MgtadrOuMcw2vJcVvhJdMKRzpVddhLWUIkGFbBz7ZCQ,379
|
|
436
439
|
agno/utils/safe_formatter.py,sha256=zLrW6O-nGUZvXoDkZOTgVpjeUFTmMUj8pk3FLvW_XjM,809
|
|
437
440
|
agno/utils/shell.py,sha256=JaY14Fq3ulodG4SeSdLEoOZDI4JJlmCbdgwK5beJuc8,700
|
|
438
|
-
agno/utils/streamlit.py,sha256=
|
|
439
|
-
agno/utils/string.py,sha256=
|
|
441
|
+
agno/utils/streamlit.py,sha256=Bn2kQLiTKKqyN0VXj0NBN_sz8V1bV5vImoSk1PCi52g,17966
|
|
442
|
+
agno/utils/string.py,sha256=N2BBdn-gvtFjeWAU_FBDpXBzEZxHEhK85DpA1ZiV4p0,7189
|
|
440
443
|
agno/utils/team.py,sha256=VXdm41WhsC6Rb20fHcpO4H55obQ6R435luAAZ4Jc3yQ,1853
|
|
441
444
|
agno/utils/timer.py,sha256=Fuax69yh1cVIzCYMmJDB4HpTsPM8Iiq1VaTWz1vJtF8,1282
|
|
442
|
-
agno/utils/tools.py,sha256=
|
|
445
|
+
agno/utils/tools.py,sha256=YZjA95pSNhHHcyoz5pe-Wo-yh9O2NU4Pqcbhs5kbefY,3842
|
|
443
446
|
agno/utils/web.py,sha256=JwLKspkLcuFyA19T5tf4-Rs8BGPwTEySp531A3t0sC4,655
|
|
444
447
|
agno/utils/whatsapp.py,sha256=242VwGOdbgkxVeIj4D899mpT3GnG_IpcaKnd5qebhTA,9936
|
|
445
448
|
agno/utils/yaml_io.py,sha256=cwTqCE-eBGoi87KLDcwB6iyWe0NcvEmadQjWL1cQ7jE,860
|
|
@@ -466,7 +469,7 @@ agno/vectordb/cassandra/cassandra.py,sha256=7DDOuV03bCq8rrkqnnrW_WvGV5vLDPVXKOHN
|
|
|
466
469
|
agno/vectordb/cassandra/extra_param_mixin.py,sha256=tCgHnXxuy3Ea4bhrBGkejz9kpgLyM_sUf3QfWcjqzLQ,315
|
|
467
470
|
agno/vectordb/cassandra/index.py,sha256=9Ea-AoAxCQf2xP-RoIwvujVdzpNBcm2Qgcs4O5D40cU,572
|
|
468
471
|
agno/vectordb/chroma/__init__.py,sha256=xSNCyxrJJMd37Y9aNumn026ycHrMKxREgEg1zsnCm1c,82
|
|
469
|
-
agno/vectordb/chroma/chromadb.py,sha256=
|
|
472
|
+
agno/vectordb/chroma/chromadb.py,sha256=4pAqrS2JzjC37EpAgx-p0_FrNsEHJirb30bSqXPy30M,31820
|
|
470
473
|
agno/vectordb/clickhouse/__init__.py,sha256=pcmZRNBEpDznEEpl3NzMZgvVLo8tni3X0FY1G_WXAdc,214
|
|
471
474
|
agno/vectordb/clickhouse/clickhousedb.py,sha256=IgqlE2X64gzwh4N-jkuW44_laVIvZjwyB-G06GAW_d8,28917
|
|
472
475
|
agno/vectordb/clickhouse/index.py,sha256=_YW-8AuEYy5kzOHi0zIzjngpQPgJOBdSrn9BfEL4LZU,256
|
|
@@ -506,12 +509,12 @@ agno/workflow/condition.py,sha256=JFWPnwEeOIkQWexGYDK9pToPyf_siRCW92rkFdA4yTc,28
|
|
|
506
509
|
agno/workflow/loop.py,sha256=cTVkRX5pwfZH5O19Q3W3YS9bcSKmEszkDwfR0V72rV8,30635
|
|
507
510
|
agno/workflow/parallel.py,sha256=K_fT51xzYLI2k48dafNHH4uki-HoT6H2aNwCSeHWE2c,29859
|
|
508
511
|
agno/workflow/router.py,sha256=ZAiVsh2F_9ssKj0_RzHWzfgimaZ5hfb3Ni1Xx_SkVR0,26625
|
|
509
|
-
agno/workflow/step.py,sha256=
|
|
512
|
+
agno/workflow/step.py,sha256=15vZFN5HlO3IkHqsxkM-2InUzCWC0Ee8BtoJ-OAhS5w,52485
|
|
510
513
|
agno/workflow/steps.py,sha256=uRE4oGWs2cA-TrX881AEa69zu6rheXH81mNOZiRrNvg,23719
|
|
511
514
|
agno/workflow/types.py,sha256=ZEFyaKH42261_3yx810ABfi70RUfjPGSwiIep7n53yg,17485
|
|
512
|
-
agno/workflow/workflow.py,sha256=
|
|
513
|
-
agno-2.0.
|
|
514
|
-
agno-2.0.
|
|
515
|
-
agno-2.0.
|
|
516
|
-
agno-2.0.
|
|
517
|
-
agno-2.0.
|
|
515
|
+
agno/workflow/workflow.py,sha256=40t5CqcQk_cRLfQwkUXodCBPEcWMvvQaPPLd-vKB62Y,110539
|
|
516
|
+
agno-2.0.5.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
517
|
+
agno-2.0.5.dist-info/METADATA,sha256=NITjl8r0ICMENhQha1162KEddPmOzgsh6j8D6fdqTTg,21762
|
|
518
|
+
agno-2.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
519
|
+
agno-2.0.5.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
|
|
520
|
+
agno-2.0.5.dist-info/RECORD,,
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
from io import BytesIO
|
|
2
|
-
from os.path import basename
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
from typing import List, Optional
|
|
5
|
-
from urllib.parse import urlparse
|
|
6
|
-
|
|
7
|
-
import httpx
|
|
8
|
-
|
|
9
|
-
from agno.knowledge.chunking.fixed import FixedSizeChunking
|
|
10
|
-
from agno.knowledge.chunking.strategy import ChunkingStrategy, ChunkingStrategyType
|
|
11
|
-
from agno.knowledge.document.base import Document
|
|
12
|
-
from agno.knowledge.reader.base import Reader
|
|
13
|
-
from agno.knowledge.reader.csv_reader import CSVReader
|
|
14
|
-
from agno.knowledge.reader.pdf_reader import PDFReader
|
|
15
|
-
from agno.knowledge.types import ContentType
|
|
16
|
-
from agno.utils.http import async_fetch_with_retry, fetch_with_retry
|
|
17
|
-
from agno.utils.log import log_debug
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class URLReader(Reader):
|
|
21
|
-
"""Reader for general URL content"""
|
|
22
|
-
|
|
23
|
-
def __init__(
|
|
24
|
-
self, chunking_strategy: Optional[ChunkingStrategy] = FixedSizeChunking(), proxy: Optional[str] = None, **kwargs
|
|
25
|
-
):
|
|
26
|
-
super().__init__(chunking_strategy=chunking_strategy, **kwargs)
|
|
27
|
-
self.proxy = proxy
|
|
28
|
-
|
|
29
|
-
@classmethod
|
|
30
|
-
def get_supported_chunking_strategies(self) -> List[ChunkingStrategyType]:
|
|
31
|
-
"""Get the list of supported chunking strategies for URL readers."""
|
|
32
|
-
return [
|
|
33
|
-
ChunkingStrategyType.FIXED_SIZE_CHUNKER,
|
|
34
|
-
ChunkingStrategyType.AGENTIC_CHUNKER,
|
|
35
|
-
ChunkingStrategyType.DOCUMENT_CHUNKER,
|
|
36
|
-
ChunkingStrategyType.RECURSIVE_CHUNKER,
|
|
37
|
-
ChunkingStrategyType.SEMANTIC_CHUNKER,
|
|
38
|
-
]
|
|
39
|
-
|
|
40
|
-
@classmethod
|
|
41
|
-
def get_supported_content_types(self) -> List[ContentType]:
|
|
42
|
-
return [ContentType.URL]
|
|
43
|
-
|
|
44
|
-
def read(
|
|
45
|
-
self, url: str, id: Optional[str] = None, name: Optional[str] = None, password: Optional[str] = None
|
|
46
|
-
) -> List[Document]:
|
|
47
|
-
if not url:
|
|
48
|
-
raise ValueError("No url provided")
|
|
49
|
-
|
|
50
|
-
log_debug(f"Reading: {url}")
|
|
51
|
-
|
|
52
|
-
# Retry the request up to 3 times with exponential backoff
|
|
53
|
-
response = fetch_with_retry(url, proxy=self.proxy)
|
|
54
|
-
|
|
55
|
-
documents = self._create_documents(
|
|
56
|
-
url=url, text=response.text, content=response.content, id=id, name=name, password=password
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
if not self.chunk:
|
|
60
|
-
return documents
|
|
61
|
-
|
|
62
|
-
chunked_documents = []
|
|
63
|
-
for document in documents:
|
|
64
|
-
chunked_documents.append(self.chunk_document(document))
|
|
65
|
-
return [doc for sublist in chunked_documents for doc in sublist]
|
|
66
|
-
|
|
67
|
-
async def async_read(
|
|
68
|
-
self, url: str, id: Optional[str] = None, name: Optional[str] = None, password: Optional[str] = None
|
|
69
|
-
) -> List[Document]:
|
|
70
|
-
"""Async version of read method"""
|
|
71
|
-
if not url:
|
|
72
|
-
raise ValueError("No url provided")
|
|
73
|
-
|
|
74
|
-
log_debug(f"Reading async: {url}")
|
|
75
|
-
client_args = {"proxy": self.proxy} if self.proxy else {}
|
|
76
|
-
async with httpx.AsyncClient(**client_args) as client: # type: ignore
|
|
77
|
-
response = await async_fetch_with_retry(url, client=client)
|
|
78
|
-
|
|
79
|
-
documents = self._create_documents(
|
|
80
|
-
url=url, text=response.text, content=response.content, id=id, name=name, password=password
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
if not self.chunk:
|
|
84
|
-
return documents
|
|
85
|
-
|
|
86
|
-
return await self.chunk_documents_async(documents)
|
|
87
|
-
|
|
88
|
-
def _create_documents(
|
|
89
|
-
self,
|
|
90
|
-
url: str,
|
|
91
|
-
text: str,
|
|
92
|
-
content: bytes,
|
|
93
|
-
id: Optional[str] = None,
|
|
94
|
-
name: Optional[str] = None,
|
|
95
|
-
password: Optional[str] = None,
|
|
96
|
-
) -> List[Document]:
|
|
97
|
-
"""Helper method to create a document from URL content"""
|
|
98
|
-
|
|
99
|
-
# Determine file extension from URL
|
|
100
|
-
parsed_url = urlparse(url)
|
|
101
|
-
url_path = Path(parsed_url.path) # type: ignore
|
|
102
|
-
file_extension = url_path.suffix.lower()
|
|
103
|
-
|
|
104
|
-
# Read the document using the appropriate reader
|
|
105
|
-
if file_extension == ".csv":
|
|
106
|
-
filename = basename(parsed_url.path) or "data.csv"
|
|
107
|
-
return CSVReader().read(file=BytesIO(content), name=filename)
|
|
108
|
-
elif file_extension == ".pdf":
|
|
109
|
-
if password:
|
|
110
|
-
return PDFReader().read(pdf=BytesIO(content), name=name, password=password)
|
|
111
|
-
else:
|
|
112
|
-
return PDFReader().read(pdf=BytesIO(content), name=name)
|
|
113
|
-
else:
|
|
114
|
-
doc_name = name or parsed_url.path.strip("/").replace("/", "_").replace(" ", "_")
|
|
115
|
-
if not doc_name:
|
|
116
|
-
doc_name = parsed_url.netloc
|
|
117
|
-
if not doc_name:
|
|
118
|
-
doc_name = url
|
|
119
|
-
|
|
120
|
-
return [
|
|
121
|
-
Document(
|
|
122
|
-
name=doc_name,
|
|
123
|
-
id=id or doc_name,
|
|
124
|
-
meta_data={"url": url},
|
|
125
|
-
content=text,
|
|
126
|
-
size=len(text),
|
|
127
|
-
)
|
|
128
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|