agno 2.4.0__py3-none-any.whl → 2.4.2__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 (41) hide show
  1. agno/db/firestore/firestore.py +58 -65
  2. agno/db/mysql/async_mysql.py +47 -55
  3. agno/db/postgres/async_postgres.py +52 -61
  4. agno/db/postgres/postgres.py +25 -12
  5. agno/db/sqlite/async_sqlite.py +52 -61
  6. agno/db/sqlite/sqlite.py +24 -11
  7. agno/integrations/discord/client.py +12 -1
  8. agno/knowledge/knowledge.py +1511 -47
  9. agno/knowledge/reader/csv_reader.py +231 -8
  10. agno/knowledge/reader/field_labeled_csv_reader.py +167 -3
  11. agno/knowledge/reader/reader_factory.py +8 -1
  12. agno/knowledge/remote_content/__init__.py +33 -0
  13. agno/knowledge/remote_content/config.py +266 -0
  14. agno/knowledge/remote_content/remote_content.py +105 -17
  15. agno/models/base.py +12 -2
  16. agno/models/cerebras/cerebras.py +34 -2
  17. agno/models/n1n/__init__.py +3 -0
  18. agno/models/n1n/n1n.py +57 -0
  19. agno/models/ollama/__init__.py +2 -0
  20. agno/models/ollama/responses.py +100 -0
  21. agno/models/openai/__init__.py +2 -0
  22. agno/models/openai/chat.py +18 -1
  23. agno/models/openai/open_responses.py +46 -0
  24. agno/models/openrouter/__init__.py +2 -0
  25. agno/models/openrouter/responses.py +146 -0
  26. agno/models/perplexity/perplexity.py +2 -0
  27. agno/os/interfaces/slack/router.py +10 -1
  28. agno/os/interfaces/whatsapp/router.py +6 -0
  29. agno/os/routers/components/components.py +10 -1
  30. agno/os/routers/knowledge/knowledge.py +125 -0
  31. agno/os/routers/knowledge/schemas.py +12 -0
  32. agno/run/agent.py +2 -0
  33. agno/team/team.py +20 -4
  34. agno/vectordb/lightrag/lightrag.py +7 -6
  35. agno/vectordb/milvus/milvus.py +79 -48
  36. agno/vectordb/pgvector/pgvector.py +3 -3
  37. {agno-2.4.0.dist-info → agno-2.4.2.dist-info}/METADATA +4 -1
  38. {agno-2.4.0.dist-info → agno-2.4.2.dist-info}/RECORD +41 -35
  39. {agno-2.4.0.dist-info → agno-2.4.2.dist-info}/WHEEL +1 -1
  40. {agno-2.4.0.dist-info → agno-2.4.2.dist-info}/licenses/LICENSE +0 -0
  41. {agno-2.4.0.dist-info → agno-2.4.2.dist-info}/top_level.txt +0 -0
@@ -109,7 +109,7 @@ class LightRag(VectorDb):
109
109
  async with httpx.AsyncClient(timeout=30.0) as client:
110
110
  response = await client.post(
111
111
  f"{self.server_url}/query",
112
- json={"query": query, "mode": "hybrid"},
112
+ json={"query": query, "mode": "hybrid", "include_references": True},
113
113
  headers=self._get_headers(),
114
114
  )
115
115
 
@@ -322,7 +322,7 @@ class LightRag(VectorDb):
322
322
  async with httpx.AsyncClient(timeout=30.0) as client:
323
323
  response = await client.post(
324
324
  f"{self.server_url}/query",
325
- json={"query": query, "mode": "hybrid"},
325
+ json={"query": query, "mode": "hybrid", "include_references": True},
326
326
  headers=self._get_headers(),
327
327
  )
328
328
 
@@ -349,10 +349,11 @@ class LightRag(VectorDb):
349
349
  # LightRAG server returns a dict with 'response' key, but we expect a list of documents
350
350
  # Convert the response to the expected format
351
351
  if isinstance(result, dict) and "response" in result:
352
- # Wrap the response in a Document object
353
- return [
354
- Document(content=result["response"], meta_data={"source": "lightrag", "query": query, "mode": mode})
355
- ]
352
+ meta_data = {"source": "lightrag", "query": query, "mode": mode}
353
+ # Preserve references from LightRAG response for document citations
354
+ if "references" in result:
355
+ meta_data["references"] = result["references"]
356
+ return [Document(content=result["response"], meta_data=meta_data)]
356
357
  elif isinstance(result, list):
357
358
  # Convert list items to Document objects
358
359
  documents = []
@@ -241,7 +241,7 @@ class Milvus(VectorDb):
241
241
  "id": doc_id,
242
242
  "text": cleaned_content,
243
243
  "name": document.name,
244
- "content_id": document.content_id,
244
+ "content_id": document.content_id or "",
245
245
  "meta_data": meta_data_str,
246
246
  "content": cleaned_content,
247
247
  "usage": usage_str,
@@ -334,6 +334,7 @@ class Milvus(VectorDb):
334
334
  scroll_result = self.client.query(
335
335
  collection_name=self.collection,
336
336
  filter=expr,
337
+ output_fields=["id"],
337
338
  limit=1,
338
339
  )
339
340
  return len(scroll_result) > 0 and len(scroll_result[0]) > 0
@@ -363,6 +364,7 @@ class Milvus(VectorDb):
363
364
  scroll_result = self.client.query(
364
365
  collection_name=self.collection,
365
366
  filter=expr,
367
+ output_fields=["id"],
366
368
  limit=1,
367
369
  )
368
370
  return len(scroll_result) > 0 and len(scroll_result[0]) > 0
@@ -429,7 +431,7 @@ class Milvus(VectorDb):
429
431
  "id": doc_id,
430
432
  "vector": document.embedding,
431
433
  "name": document.name,
432
- "content_id": document.content_id,
434
+ "content_id": document.content_id or "",
433
435
  "meta_data": meta_data,
434
436
  "content": cleaned_content,
435
437
  "usage": document.usage,
@@ -512,7 +514,7 @@ class Milvus(VectorDb):
512
514
  "id": doc_id,
513
515
  "vector": document.embedding,
514
516
  "name": document.name,
515
- "content_id": document.content_id,
517
+ "content_id": document.content_id or "",
516
518
  "meta_data": meta_data,
517
519
  "content": cleaned_content,
518
520
  "usage": document.usage,
@@ -547,30 +549,41 @@ class Milvus(VectorDb):
547
549
  filters (Optional[Dict[str, Any]]): Filters to apply while upserting
548
550
  """
549
551
  log_debug(f"Upserting {len(documents)} documents")
550
- for document in documents:
551
- document.embed(embedder=self.embedder)
552
- cleaned_content = document.content.replace("\x00", "\ufffd")
553
- doc_id = md5(cleaned_content.encode()).hexdigest()
554
-
555
- meta_data = document.meta_data or {}
556
- if filters:
557
- meta_data.update(filters)
558
-
559
- data = {
560
- "id": doc_id,
561
- "vector": document.embedding,
562
- "name": document.name,
563
- "content_id": document.content_id,
564
- "meta_data": document.meta_data,
565
- "content": cleaned_content,
566
- "usage": document.usage,
567
- "content_hash": content_hash,
568
- }
569
- self.client.upsert(
570
- collection_name=self.collection,
571
- data=data,
572
- )
573
- log_debug(f"Upserted document: {document.name} ({document.meta_data})")
552
+
553
+ if self.search_type == SearchType.hybrid:
554
+ for document in documents:
555
+ document.embed(embedder=self.embedder)
556
+ data = self._prepare_document_data(content_hash=content_hash, document=document, include_vectors=True)
557
+ self.client.upsert(
558
+ collection_name=self.collection,
559
+ data=data,
560
+ )
561
+ log_debug(f"Upserted hybrid document: {document.name} ({document.meta_data})")
562
+ else:
563
+ for document in documents:
564
+ document.embed(embedder=self.embedder)
565
+ cleaned_content = document.content.replace("\x00", "\ufffd")
566
+ doc_id = md5(cleaned_content.encode()).hexdigest()
567
+
568
+ meta_data = document.meta_data or {}
569
+ if filters:
570
+ meta_data.update(filters)
571
+
572
+ data = {
573
+ "id": doc_id,
574
+ "vector": document.embedding,
575
+ "name": document.name,
576
+ "content_id": document.content_id or "",
577
+ "meta_data": meta_data, # type: ignore[dict-item]
578
+ "content": cleaned_content,
579
+ "usage": document.usage, # type: ignore[dict-item]
580
+ "content_hash": content_hash,
581
+ }
582
+ self.client.upsert(
583
+ collection_name=self.collection,
584
+ data=data,
585
+ )
586
+ log_debug(f"Upserted document: {document.name} ({document.meta_data})")
574
587
 
575
588
  async def async_upsert(
576
589
  self, content_hash: str, documents: List[Document], filters: Optional[Dict[str, Any]] = None
@@ -616,28 +629,46 @@ class Milvus(VectorDb):
616
629
  embed_tasks = [document.async_embed(embedder=self.embedder) for document in documents]
617
630
  await asyncio.gather(*embed_tasks, return_exceptions=True)
618
631
 
619
- async def process_document(document):
620
- cleaned_content = document.content.replace("\x00", "\ufffd")
621
- doc_id = md5(cleaned_content.encode()).hexdigest()
622
- data = {
623
- "id": doc_id,
624
- "vector": document.embedding,
625
- "name": document.name,
626
- "content_id": document.content_id,
627
- "meta_data": document.meta_data,
628
- "content": cleaned_content,
629
- "usage": document.usage,
630
- "content_hash": content_hash,
631
- }
632
- await self.async_client.upsert(
633
- collection_name=self.collection,
634
- data=data,
635
- )
636
- log_debug(f"Upserted document asynchronously: {document.name} ({document.meta_data})")
637
- return data
632
+ if self.search_type == SearchType.hybrid:
633
+
634
+ async def process_hybrid_document(document):
635
+ data = self._prepare_document_data(content_hash=content_hash, document=document, include_vectors=True)
636
+ await self.async_client.upsert(
637
+ collection_name=self.collection,
638
+ data=data,
639
+ )
640
+ log_debug(f"Upserted hybrid document asynchronously: {document.name} ({document.meta_data})")
641
+ return data
642
+
643
+ await asyncio.gather(*[process_hybrid_document(doc) for doc in documents])
644
+ else:
645
+
646
+ async def process_document(document):
647
+ cleaned_content = document.content.replace("\x00", "\ufffd")
648
+ doc_id = md5(cleaned_content.encode()).hexdigest()
649
+
650
+ meta_data = document.meta_data or {}
651
+ if filters:
652
+ meta_data.update(filters)
653
+
654
+ data = {
655
+ "id": doc_id,
656
+ "vector": document.embedding,
657
+ "name": document.name,
658
+ "content_id": document.content_id or "",
659
+ "meta_data": meta_data, # type: ignore[dict-item]
660
+ "content": cleaned_content,
661
+ "usage": document.usage, # type: ignore[dict-item]
662
+ "content_hash": content_hash,
663
+ }
664
+ await self.async_client.upsert(
665
+ collection_name=self.collection,
666
+ data=data,
667
+ )
668
+ log_debug(f"Upserted document asynchronously: {document.name} ({document.meta_data})")
669
+ return data
638
670
 
639
- # Process all documents in parallel
640
- await asyncio.gather(*[process_document(doc) for doc in documents])
671
+ await asyncio.gather(*[process_document(doc) for doc in documents])
641
672
 
642
673
  log_debug(f"Upserted {len(documents)} documents asynchronously in parallel")
643
674
 
@@ -379,7 +379,7 @@ class PgVector(VectorDb):
379
379
  record = {
380
380
  "id": record_id,
381
381
  "name": doc.name,
382
- "meta_data": doc.meta_data,
382
+ "meta_data": meta_data,
383
383
  "filters": filters,
384
384
  "content": cleaned_content,
385
385
  "embedding": doc.embedding,
@@ -514,7 +514,7 @@ class PgVector(VectorDb):
514
514
  return {
515
515
  "id": record_id,
516
516
  "name": doc.name,
517
- "meta_data": doc.meta_data,
517
+ "meta_data": meta_data,
518
518
  "filters": filters,
519
519
  "content": cleaned_content,
520
520
  "embedding": doc.embedding,
@@ -664,7 +664,7 @@ class PgVector(VectorDb):
664
664
  record = {
665
665
  "id": record_id, # use record_id as a reproducible id to avoid duplicates while upsert
666
666
  "name": doc.name,
667
- "meta_data": doc.meta_data,
667
+ "meta_data": meta_data,
668
668
  "filters": filters,
669
669
  "content": cleaned_content,
670
670
  "embedding": doc.embedding,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.4.0
3
+ Version: 2.4.2
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
@@ -50,6 +50,7 @@ Requires-Dist: PyJWT; extra == "dev"
50
50
  Requires-Dist: mcp; extra == "dev"
51
51
  Requires-Dist: openai; extra == "dev"
52
52
  Requires-Dist: fakeredis; extra == "dev"
53
+ Requires-Dist: xlwt; extra == "dev"
53
54
  Provides-Extra: os
54
55
  Requires-Dist: fastapi; extra == "os"
55
56
  Requires-Dist: uvicorn; extra == "os"
@@ -259,6 +260,8 @@ Provides-Extra: text
259
260
  Requires-Dist: aiofiles; extra == "text"
260
261
  Provides-Extra: csv
261
262
  Requires-Dist: aiofiles; extra == "csv"
263
+ Requires-Dist: openpyxl; extra == "csv"
264
+ Requires-Dist: xlrd; extra == "csv"
262
265
  Provides-Extra: markdown
263
266
  Requires-Dist: unstructured; extra == "markdown"
264
267
  Requires-Dist: markdown; extra == "markdown"
@@ -49,7 +49,7 @@ agno/db/dynamo/dynamo.py,sha256=NPPvVCjUVdmSU9EtzkWy80KSfDODfONyfXv8tNeYLpE,1106
49
49
  agno/db/dynamo/schemas.py,sha256=NbVLIEqe2D5QYhS9JAAPqK4RdADN3G6fBJbULzGtPKM,18507
50
50
  agno/db/dynamo/utils.py,sha256=z-s0FAWfiGJPT_k68rlArP5SnaXlW8ycnGi9dh4Nehc,28005
51
51
  agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
52
- agno/db/firestore/firestore.py,sha256=r0A_H5ERWzHwFoR1jOja0K-OBlMs8dx0eWgmECJqa0A,95903
52
+ agno/db/firestore/firestore.py,sha256=cK0yoiRSBgbcRG5OhK99JRcX1Cot5wniVJrEASK7_8A,95261
53
53
  agno/db/firestore/schemas.py,sha256=dri9lGHxs-IsqvsgL_noFoeAVn9iZflMPsqHkNdA-DM,6123
54
54
  agno/db/firestore/utils.py,sha256=lshztynSRxYUQxA1LTCPZlugaW4VKOB5TtKjQ1BQ94s,14194
55
55
  agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
@@ -73,13 +73,13 @@ agno/db/mongo/mongo.py,sha256=u9ojvGaF7mOzZl0--sjaegtRmu9ruJCfpKU3bGHP1wg,106353
73
73
  agno/db/mongo/schemas.py,sha256=DIBlS9oEPhGzexY3y7ICKs3efaDJ2zrB4JI_-p9CwBg,3519
74
74
  agno/db/mongo/utils.py,sha256=1KrbF1PR_707e9SqXZcquaw_N7mRYm9HjJnvYwBjgG8,9921
75
75
  agno/db/mysql/__init__.py,sha256=LYeR17sORN-i8lFH7Sfk-THwEcQZP79_WHmpaBj9R7Y,130
76
- agno/db/mysql/async_mysql.py,sha256=Cx5r0NBTQTbtSGE-3PEopi3tu1uvbiwcMxdd88ENiVs,126083
76
+ agno/db/mysql/async_mysql.py,sha256=IGASTYDlTaBcUfXtw9SLWZZeAUVgvwUexw3282BPQjY,125486
77
77
  agno/db/mysql/mysql.py,sha256=JIKUdfnEcP0RUiNI-ZJtB_39uTmQC8emaVt-vIm4ypw,123885
78
78
  agno/db/mysql/schemas.py,sha256=_Qkx0plM5oPsthnLHpQOoMLcIbjpTKiaLDbxPNKh7ak,9892
79
79
  agno/db/mysql/utils.py,sha256=wo-QamkH6dOBmCv1tsY5yp-0L7ca2CD2Yj9BpqpcLhs,17799
80
80
  agno/db/postgres/__init__.py,sha256=Ojk00nTCzQFiH2ViD7KIBjgpkTKLRNPCwWnuXMKtNXY,154
81
- agno/db/postgres/async_postgres.py,sha256=T2laMgg8EMKh1QHgUt6P8L2BPrp_wHZ3kIlKRmWx7uk,128917
82
- agno/db/postgres/postgres.py,sha256=5dJ0bbjhDcn-1sUaCjtKFfkOpsje4ZeUdq9sVKNq3QQ,184894
81
+ agno/db/postgres/async_postgres.py,sha256=adju222IPFyY_vd5mRc876aP2s08jSpQaebOGDoQWnc,128247
82
+ agno/db/postgres/postgres.py,sha256=DwW0OJAIJwGPfId6Kf-U6yPBCB08YB3xkiNO2nQuyYs,185487
83
83
  agno/db/postgres/schemas.py,sha256=YrRG0HTSrW5L4lQgLlbpNrwT-rutUq2I4k5MT2PHQX0,12677
84
84
  agno/db/postgres/utils.py,sha256=_nVMb1iHwNf829aWK-jdE5nEpfuDitFdyoBJc-vkfaY,16239
85
85
  agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
@@ -97,9 +97,9 @@ agno/db/singlestore/schemas.py,sha256=wPzSrSQ3hVdUw385nmr8UmurHV6vtpAVuhYUlaLh1K
97
97
  agno/db/singlestore/singlestore.py,sha256=B7votCquaXWmRofkqK9kr0scVovzdmnUshjYp3VqELw,121986
98
98
  agno/db/singlestore/utils.py,sha256=vJ6QM-wbJBzA8l5ULYbJ5KLB9c3-GZqtb0NWdy5gg2c,14225
99
99
  agno/db/sqlite/__init__.py,sha256=09V3i4y0-tBjt60--57ivZ__SaaS67GCsDT4Apzv-5Y,138
100
- agno/db/sqlite/async_sqlite.py,sha256=196uXcH--Nl1RhtifpKRSAd43cFNcEltsCpQghvJEws,137639
100
+ agno/db/sqlite/async_sqlite.py,sha256=BzvBibnsK654K48gx-aWzV7FhmYNS324JBUnoldILTk,136969
101
101
  agno/db/sqlite/schemas.py,sha256=uOhtTee4bdmDyl3xsGW8cnVDKB-j0-fZ0vVLikzMY90,12239
102
- agno/db/sqlite/sqlite.py,sha256=5NhVKpnS4XKc2qymO9drGG8-f-RDO_-DInPtVyzmRHo,175993
102
+ agno/db/sqlite/sqlite.py,sha256=0GQR3FS9UlDxFQs1VF_t5OXhw7FBccfL6CO8JZE7CKY,176593
103
103
  agno/db/sqlite/utils.py,sha256=PZp-g4oUf6Iw1kuDAmOpIBtfyg4poKiG_DxXP4EonFI,15721
104
104
  agno/db/surrealdb/__init__.py,sha256=C8qp5-Nx9YnSmgKEtGua-sqG_ntCXONBw1qqnNyKPqI,75
105
105
  agno/db/surrealdb/metrics.py,sha256=oKDRyjRQ6KR3HaO8zDHQLVMG7-0NDkOFOKX5I7mD5FA,10336
@@ -123,11 +123,11 @@ agno/hooks/__init__.py,sha256=AZnexNDnt3IlLDzPAWAYykH_jybXO9eFuXSuwIQT04s,112
123
123
  agno/hooks/decorator.py,sha256=IWqTRM3IYfIjLsmFGRqUpHuArjQf0457l3viDZ5GJBU,5399
124
124
  agno/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
125
  agno/integrations/discord/__init__.py,sha256=MS08QSnegGgpDZd9LyLjK4pWIk9dXlbzgD7wB3eEVJE,88
126
- agno/integrations/discord/client.py,sha256=Yz4yWYv2-6MYM9cS5yrHHLEQx32hDY0o2lhP5V4SZsg,8387
126
+ agno/integrations/discord/client.py,sha256=HbXQHHOKKSVFZs0sIJlzoW9bLigbBgOE2kP0IXW_CIg,8990
127
127
  agno/knowledge/__init__.py,sha256=MTLKRRh6eqz-w_gw56rqdwV9FoeE9zjX8xYUCCdYg8A,243
128
128
  agno/knowledge/content.py,sha256=q2bjcjDhfge_UrQAcygrv5R9ZTk7vozzKnQpatDQWRo,2295
129
129
  agno/knowledge/filesystem.py,sha256=zq7xMDkH64x4UM9jcKLIBmPOJcrud2e-lb-pMtaFUSI,15102
130
- agno/knowledge/knowledge.py,sha256=nYXyuq_xKSXw8ff1mfGbu8zHJDrC5ycYEcbH-OPThU8,143529
130
+ agno/knowledge/knowledge.py,sha256=LXUWeU91o5Y4Yki5YagME6nxI7EyoxAgtidm2Iic2mE,211033
131
131
  agno/knowledge/protocol.py,sha256=_hSe0czvTOmu9_NtzsaOxDCnTMYklObxYTphQB3pZ9M,4248
132
132
  agno/knowledge/types.py,sha256=4NnkL_h2W-7GQnHW-yIqMNPUCWLzo5qBXF99gfsMe08,773
133
133
  agno/knowledge/utils.py,sha256=GJHL1vAOrD6KFEpOiN4Gsgz70fRG0E-jooKIBdfq4zI,9853
@@ -165,15 +165,15 @@ agno/knowledge/embedder/voyageai.py,sha256=E6RjQRaa5d2BHmkW09QG68ncrgBV2Vqq25ZR8
165
165
  agno/knowledge/reader/__init__.py,sha256=edjnCwyDjM9Q5JPMi4K9mll8a3CdV52iagUKAgGiaas,159
166
166
  agno/knowledge/reader/arxiv_reader.py,sha256=su1A9VmQBtt5q_5rbsmFh_l3DPnXKrASBp3O5lpU1R4,2780
167
167
  agno/knowledge/reader/base.py,sha256=jntGjnQ8Y05cz3eqvSt5cgicotPqX2hl_2grrIShlFI,3885
168
- agno/knowledge/reader/csv_reader.py,sha256=_273vm4DTsMa4IvYjh5WpUx6TdvnjpaW2UAReB0yO4c,6418
168
+ agno/knowledge/reader/csv_reader.py,sha256=9aX42GZWdgA49QMC4uTFDhEK5ph218eca2wCYFuOMDI,14870
169
169
  agno/knowledge/reader/docx_reader.py,sha256=pMzKK_dkYaXeJy_MtHSND3RkPkJUkGWIUEBBOeAdtEk,3269
170
- agno/knowledge/reader/field_labeled_csv_reader.py,sha256=rxnSHXoSYiJYWfzyxlVvArBOhoXate71tiqUPPCOOrQ,11491
170
+ agno/knowledge/reader/field_labeled_csv_reader.py,sha256=TX7r__IH4I97YQ-o5jHP3E1faLoxkKKF2ZdDdO-VEXo,18501
171
171
  agno/knowledge/reader/firecrawl_reader.py,sha256=VEgkSaM7ARz0jUGmAvc8Yet2P9dbFlv2G10AEyRO1-4,6900
172
172
  agno/knowledge/reader/json_reader.py,sha256=qmHoSjDh1n12RkH5DUBlqO4RPLskGRDfVqlJa-M2vC0,3309
173
173
  agno/knowledge/reader/markdown_reader.py,sha256=f48rwYc_1FJAz0_cxCG0tPNWQnWM0MhVv4pSZqc_gkk,5385
174
174
  agno/knowledge/reader/pdf_reader.py,sha256=89b2zAnTdRC1ddp_zPYwuEGIPYveqf1krgHb-OW4zQM,17357
175
175
  agno/knowledge/reader/pptx_reader.py,sha256=wk3gSEhxJl36jlbNYCDIyKXjx_sy7r4xiRMaIW4HFFI,3890
176
- agno/knowledge/reader/reader_factory.py,sha256=0S2cLrmE5PujuTgX55QayfT9C1pliofXf3wwoTiy_k4,16430
176
+ agno/knowledge/reader/reader_factory.py,sha256=vL4h2ag0iCYeYtKmVoQpvttsop4rBM7GIiHgMA1Q6ro,16627
177
177
  agno/knowledge/reader/s3_reader.py,sha256=F1glvjOpArXPSN8uCdjtnEe-S8HTJ-w7Av34bsFa7-g,3279
178
178
  agno/knowledge/reader/tavily_reader.py,sha256=LpKdMb9Z6UpDyNq137voesolGE8uCGjqf398JsQqkgY,7228
179
179
  agno/knowledge/reader/text_reader.py,sha256=XLsPqOANI-zRgOp1ueKHD8D14AdP_N1m0ij7Isqi1Fc,4615
@@ -181,8 +181,9 @@ agno/knowledge/reader/web_search_reader.py,sha256=bhFJqqlaRxJSQYE1oMlUiImW4DriOH
181
181
  agno/knowledge/reader/website_reader.py,sha256=B64_xoH3Mlfweyj96msTiIW42-aN_OOAfhNkZyWIzmU,19431
182
182
  agno/knowledge/reader/wikipedia_reader.py,sha256=C5aMlTwRHRW7FFh2c-JKZLlX5l0PzW6khq5Tu37FwbU,3137
183
183
  agno/knowledge/reader/youtube_reader.py,sha256=k12hrCE2ib9Pp9deE4oktRxHEKQddNbdOjOzTkqLA1I,3031
184
- agno/knowledge/remote_content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
- agno/knowledge/remote_content/remote_content.py,sha256=oCfOU-UEpi9yEPMpFmuiiiM9ItKA5BGrvs08HEz59tQ,2953
184
+ agno/knowledge/remote_content/__init__.py,sha256=3zIQf3-iUK0Jy3_DtrmFhJSPol-DOSQY9F9bKcL8BlQ,654
185
+ agno/knowledge/remote_content/config.py,sha256=vRCGYH_yvktB22QG6bDP4UXMitF0y2Riddkgw8xCPsk,7833
186
+ agno/knowledge/remote_content/remote_content.py,sha256=0LtdtGHx-n9l12qDvxVYWb6Nc0907HVc-RcRQtrM7h4,5731
186
187
  agno/knowledge/reranker/__init__.py,sha256=6EK9EUQQY0ar-Jnev4hmlNyq2GwS_6UDMJXD2IBcFvE,74
187
188
  agno/knowledge/reranker/base.py,sha256=GsPcMmBiI5gOX8XABpmQNeP478mp5ma-W-1n37P0-QM,376
188
189
  agno/knowledge/reranker/cohere.py,sha256=2Be5blVyeZ3vYlnFa2NYvJuytjaCB8G2OWJ11pQz7vQ,2178
@@ -209,7 +210,7 @@ agno/memory/strategies/base.py,sha256=bHtkZ27U9VXKezdaSWLJZELjK97GcpQUBefSa8BYpp
209
210
  agno/memory/strategies/summarize.py,sha256=4M9zWTsooC3EtHpZoC7Z-yFaQgQoebRMNfZPitdsvB0,7307
210
211
  agno/memory/strategies/types.py,sha256=b3N5jOG_dM4AxT7vGagFIc9sqUUjxFtRHSoH4_AhEx8,1225
211
212
  agno/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
- agno/models/base.py,sha256=1S3RLZCOHShCoaMnee88z6ZjINYkw2ngxqQvGNyxQtc,128605
213
+ agno/models/base.py,sha256=W9NXmhGrqA_q1Wx97WrEUFk6YcxMu9miaZJH_8Z52d4,129282
213
214
  agno/models/defaults.py,sha256=1_fe4-ZbNriE8BgqxVRVi4KGzEYxYKYsz4hn6CZNEEM,40
214
215
  agno/models/message.py,sha256=5bZOFdZuhsQw06nNppvFJq-JGI4lqQt4sVhdjfEFBZM,19976
215
216
  agno/models/metrics.py,sha256=bQJ5DMoFcrb2EyA2VUm4u9HVGbgTKO5F1o2A_t_7hqI,4913
@@ -226,7 +227,7 @@ agno/models/azure/__init__.py,sha256=EoFdJHjayvmv_VOmaW9cJguwA1K5OFS_nFeazyn0B2w
226
227
  agno/models/azure/ai_foundry.py,sha256=VMIci3geZ5KGq-ua7k0eHH33gBFOWbJWamEsxtmiaqg,19915
227
228
  agno/models/azure/openai_chat.py,sha256=4vya7TxRVD7TzZX6L0NAZeF_UPp2tHm_kOaIdytz6lw,6063
228
229
  agno/models/cerebras/__init__.py,sha256=F3vE0lmMu-qDQ_Y7hg_czJitLsvNu4SfPv174wg1cq8,376
229
- agno/models/cerebras/cerebras.py,sha256=ZXYJrsO84bEf6buOtY8iYrI4jGg3_SYkBFHs3H-SBy0,21695
230
+ agno/models/cerebras/cerebras.py,sha256=Q2AgXTXRNDh9CryjbTqNxpCg2USUzErDIRTU5tv0tEQ,23122
230
231
  agno/models/cerebras/cerebras_openai.py,sha256=ut4_xz6gKWKA-kJZCWjpk0RuCrvLe0YDrzofxh9E7_U,4907
231
232
  agno/models/cohere/__init__.py,sha256=4kFUnfPEL3__hd1TRW7fZxh7D_DctcpY5QDV58lR6s0,72
232
233
  agno/models/cohere/chat.py,sha256=9hSS4Mk-aYOh7UMzo8LVf7uRQhe46sxvN_6N6zJ8lKI,17798
@@ -265,22 +266,27 @@ agno/models/meta/llama.py,sha256=JvyuXtN7Em55U_uRy9cHEx5iw8FgbnQRPo32_1GsMxg,189
265
266
  agno/models/meta/llama_openai.py,sha256=B9kmyy9QlhZaa13N0b6UixHffxJPz4I4ds4a8ML0lyA,2653
266
267
  agno/models/mistral/__init__.py,sha256=6CP9TDn8oRUjtGBk1McvSQHrjY935vB6msGPlXBhkSw,86
267
268
  agno/models/mistral/mistral.py,sha256=FpyYp9zlnKuXVKBDhHSMNnHZTE-8m2w5h6ohoTlT6AE,16845
269
+ agno/models/n1n/__init__.py,sha256=CymyKzTZWr-klifwaxzGTMDSVaPxBVtKOHQ-4VaPiWg,55
270
+ agno/models/n1n/n1n.py,sha256=UW7MPHNAU0sfMTaHh7HIYcWVSuc_-I16KrrlsqF1I2U,1977
268
271
  agno/models/nebius/__init__.py,sha256=gW2yvxIfV2gxxOnBtTP8MCpI9AvMbIE6VTw-gY01Uvg,67
269
272
  agno/models/nebius/nebius.py,sha256=T1slyayVfxSXNVVpylqogdWk8fNzvCJhzdWfhRCRdw8,1893
270
273
  agno/models/nexus/__init__.py,sha256=q9pwjZ2KXpG1B3Cy8ujrj3_s0a_LI5SaekXJL6mh4gE,63
271
274
  agno/models/nexus/nexus.py,sha256=rJcBQXR1aqUiLWMPBRuHIEh87wVrsqXup1hr_smanBQ,635
272
275
  agno/models/nvidia/__init__.py,sha256=O0g3_0_ciOz0AH4Y4CAL7YRfhdDPAvhDzNjJmgWKT78,74
273
276
  agno/models/nvidia/nvidia.py,sha256=Q81Ey-IJFefOmlrjbBgwNXZ2ARey-j6pXPJHItaE8uY,1583
274
- agno/models/ollama/__init__.py,sha256=TIhwxG7ek3eyfoKTLoZQXwdgzcIngYKjbjSlkf2gkWE,72
277
+ agno/models/ollama/__init__.py,sha256=EftOS-8miA9obZngI5EKEnTUGrqJ3P8YNED0Z0mvEwo,152
275
278
  agno/models/ollama/chat.py,sha256=Szc8rEWRvQ2CW50V5xAuccX4Ozc1BAV9wUPbFJhY_J8,16862
276
- agno/models/openai/__init__.py,sha256=OssVgQRpsriU6aJZ3lIp_jFuqvX6y78L4Fd3uTlmI3E,225
277
- agno/models/openai/chat.py,sha256=PX3X_GS-SEokjjykqEXG7aeUUADbt5Rinz6kSASxzx4,41784
279
+ agno/models/ollama/responses.py,sha256=1zG_Cjy1vqphd9oHL-MtpdJE4ta_vGGP1B5TburSsxQ,3607
280
+ agno/models/openai/__init__.py,sha256=IFvK6nJ4kB-TBoXaRromOBal2tOLWzmG5nGQeRQbgUk,306
281
+ agno/models/openai/chat.py,sha256=TiAE0Q8_Wo3IO3D0_UJJ9g5OxWOwoBly40UefHAtEow,42415
278
282
  agno/models/openai/like.py,sha256=wmw9PfAVqluBs4MMY73dgjelKn1yl5JDKyCRvaNFjFw,745
283
+ agno/models/openai/open_responses.py,sha256=1YAr_-GiLgVr1vgNY1vBlC1j_CjBPYLJYhCvxj66l5M,1766
279
284
  agno/models/openai/responses.py,sha256=U2A-Jh80QcMBFG7acL_ph2TMOoRBK9GlK3ZtL9Ni_CY,49309
280
- agno/models/openrouter/__init__.py,sha256=ZpZhNyy_EGSXp58uC9e2iyjnxBctql7GaY8rUG-599I,90
285
+ agno/models/openrouter/__init__.py,sha256=gLICPUB6iLkv7EL1aV8Bc-TtJkqwzhzK2QA0uJv_a5U,182
281
286
  agno/models/openrouter/openrouter.py,sha256=cZGK8ZD_cs4cXhrnSq2OLXR0yXMbBUric5n2coFMHvI,5689
287
+ agno/models/openrouter/responses.py,sha256=Zpmhmp19e5rBmn9ato_JmHfCBWFg7mHqt12wrUTuo6M,5437
282
288
  agno/models/perplexity/__init__.py,sha256=JNmOElDLwcZ9_Lk5owkEdgwmAhaH3YJ-VJqOI8rgp5c,90
283
- agno/models/perplexity/perplexity.py,sha256=NCMkktlzKiEuCa9sU2lL0QB524jz03zabkNICHE4I0c,7659
289
+ agno/models/perplexity/perplexity.py,sha256=1u1Q3ZM4LRY1xclOVvz862Tc6stA8od3wWoCBPsZ7y8,7811
284
290
  agno/models/portkey/__init__.py,sha256=CjGmltOuDlYfuJgpYHmfRkKiIS9W9MH4oYaGKaNNZeM,71
285
291
  agno/models/portkey/portkey.py,sha256=eKB0SA8t2W7l_9YkDV0hgLHBnFn19eMKU8gKixCdfSI,2993
286
292
  agno/models/requesty/__init__.py,sha256=pcvbjspqNFhjxpbBcNki1tR6GoWsqU3idQuoPe1TiAg,82
@@ -321,11 +327,11 @@ agno/os/interfaces/agui/agui.py,sha256=KjQ3qrTCtFWDcHk3ViPguV6FvSuYKrAwENbDzUCcs
321
327
  agno/os/interfaces/agui/router.py,sha256=HmYWb2PcBNeWpq6ft-dfdLlSyEHXLaM9CHaVBS4wU_8,5645
322
328
  agno/os/interfaces/agui/utils.py,sha256=veRYnk8EVSuF2owJjNFUhQRsyqbxIlFQnAqjB0KY0mU,23645
323
329
  agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
324
- agno/os/interfaces/slack/router.py,sha256=7ZliON3OGFSHscbEdeRqFG3ZRsvMRMYiyC9mxdHSRFI,6014
330
+ agno/os/interfaces/slack/router.py,sha256=PqlObVE396in76wN5bef8YxeFWYANwlcrvw0Fau3vGY,6402
325
331
  agno/os/interfaces/slack/security.py,sha256=nMbW_0g-G_DEMbCQOD8C3PYrRPIpB2cyM6P-xS6GHYk,917
326
332
  agno/os/interfaces/slack/slack.py,sha256=kX5u5sUa0ITOc_Yz65SBofAIUrZWB36Bz5d3oz3fsYo,1472
327
333
  agno/os/interfaces/whatsapp/__init__.py,sha256=-sD2W00qj8hrx72ATVMtaDc7GfAsaCQJMlnRjYPwisg,82
328
- agno/os/interfaces/whatsapp/router.py,sha256=TuprVFHfYbAWsYEmdxbt_VIxeiK0In0K8dcQ4NroNwU,10839
334
+ agno/os/interfaces/whatsapp/router.py,sha256=G4XgtDdDyjOrSTDX54rPLxt6-Hc6x3HNx-OSNOH1zuo,11124
329
335
  agno/os/interfaces/whatsapp/security.py,sha256=0GYdG28yeSpV47nMWASaFSTiGESSstcFAeL6amobvFE,1772
330
336
  agno/os/interfaces/whatsapp/whatsapp.py,sha256=N47r2UU9gPdqiT6emqorBv7TB-DaPTSm3PKWtX_hUcY,1262
331
337
  agno/os/middleware/__init__.py,sha256=ttLwyXLgEZBZp0N7j2j_WcvAYNcznRgcN4YyWZfQA4Y,231
@@ -339,14 +345,14 @@ agno/os/routers/agents/__init__.py,sha256=nr1H0Mp7NlWPnvu0ccaHVSPHz-lXg43TRMApkU
339
345
  agno/os/routers/agents/router.py,sha256=zfj9JuruHiucl-3jqOTp0sWkHydI7rHNCD20q3Hej-c,26615
340
346
  agno/os/routers/agents/schema.py,sha256=4jVKsM-KVSQEwN4EIzUT3fzs7OF7QQ6sdS8f40_IGPk,12940
341
347
  agno/os/routers/components/__init__.py,sha256=yzvMCbvRYU2pMRWNNgDH9hmVq4jhMqsUG2aIeEyNcpE,109
342
- agno/os/routers/components/components.py,sha256=Txt5pYV-P546UWgbptQB9kOEgBCVIXEixAjRv2sA0pg,18302
348
+ agno/os/routers/components/components.py,sha256=DlkIli9GxrcKEAUyYlPSHjyEH8v1eopRGtx0943LEgY,18733
343
349
  agno/os/routers/evals/__init__.py,sha256=3s0M-Ftg5A3rFyRfTATs-0aNA6wcbj_5tCvtwH9gORQ,87
344
350
  agno/os/routers/evals/evals.py,sha256=9DErwITEV6O1BAr28asB29Yvgy8C5wtzQyz-ys-yJzw,23478
345
351
  agno/os/routers/evals/schemas.py,sha256=ouz-tsFNsPMnYE4Y7Cti_ZbBHsL6XiXFQVXz97BYe_k,7767
346
352
  agno/os/routers/evals/utils.py,sha256=MjOPY0xNdJZY04_4YQxsv3FPCsKTMDix8jyKDWwn6kc,8367
347
353
  agno/os/routers/knowledge/__init__.py,sha256=ZSqMQ8X7C_oYn8xt7NaYlriarWUpHgaWDyHXOWooMaU,105
348
- agno/os/routers/knowledge/knowledge.py,sha256=I9bMQ2W5JM8X6U1Q1-i-s51tmrZ0eN5n31jt_yPi9PU,51287
349
- agno/os/routers/knowledge/schemas.py,sha256=XcB9ODjCcnnkW8lbM7xuc5ZX2tIy_kmJX2H5qlHDakM,8869
354
+ agno/os/routers/knowledge/knowledge.py,sha256=QGKEJQwxwOP8NyEMdNZ3_W6g0atw4lzI4iDsbU5XmPU,56969
355
+ agno/os/routers/knowledge/schemas.py,sha256=Db_K8OVXCfjmrWucDzvioIHqGkKPeFGEroRrN7sON1Y,9523
350
356
  agno/os/routers/memory/__init__.py,sha256=9hrYFc1dkbsLBqKfqyfioQeLX9TTbLrJx6lWDKNNWbc,93
351
357
  agno/os/routers/memory/memory.py,sha256=SAXNlJTsQ-orSQymlQ-XVgN6RLlui3W9tB0NVSOWLrA,32854
352
358
  agno/os/routers/memory/schemas.py,sha256=D9g7cp--ds0e1M2omoJ8chuMA8agNUJaYqMHWgWElOE,4658
@@ -384,7 +390,7 @@ agno/registry/registry.py,sha256=fMNOhDBKqhXuZyDqSu6jeaZu4JJ5JT4vaEUBY_KA8OQ,243
384
390
  agno/remote/__init__.py,sha256=zgDS3cO_6VavICojsmG8opJ49wLwydftGE6i6_yPDTo,66
385
391
  agno/remote/base.py,sha256=D2TDs7rmlbxgbLEArga7jq9IgdKSzhs_jzoUO43WDQo,23358
386
392
  agno/run/__init__.py,sha256=GZwloCe48rEAjkb_xOJ7piOjICmHawiR1d4SqBtUd-k,222
387
- agno/run/agent.py,sha256=YqX-IcB9_UG4ws94qyEUr2AZOAbLZC2A6GBaRm561MI,31665
393
+ agno/run/agent.py,sha256=FUddcoLqmcAVSNSoLjE6eAjDYiPPtluUmpPkoECWDj0,31741
388
394
  agno/run/base.py,sha256=ndWSxzghNERjVMRGCs-4PlZ3SXO8SvcugpekIzZDFV0,10099
389
395
  agno/run/cancel.py,sha256=Tyxg4lxwSvO2wSZDG4OF82ORQU6MYBu94YLqrEnK09Y,3019
390
396
  agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
@@ -411,7 +417,7 @@ agno/skills/loaders/base.py,sha256=Syt6lIOe-m_Kz68ndwuVed3wZFAPvYDDnJkhypazYJ8,7
411
417
  agno/skills/loaders/local.py,sha256=7budE7d-JG86XyqnRwo495yiYWDjj16yDV67aiSacOQ,7478
412
418
  agno/team/__init__.py,sha256=Ff5VMcZnkimttdCcRFEL852JgInlWCkpdlgyfhXfIo8,971
413
419
  agno/team/remote.py,sha256=BgUEQsTFA4tehDas1YO7lwQCj3cLJrxfoSFVOYm_1po,16979
414
- agno/team/team.py,sha256=OYgzP3QLJ7XtME6Z8-xTXHcrKuzsRSifswJ4xnfrIsI,475726
420
+ agno/team/team.py,sha256=EZRrJuoWu_k2zp2l7Y_6pRXHYah3TfH3RvR75Ckgab8,476539
415
421
  agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
416
422
  agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
417
423
  agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
@@ -624,16 +630,16 @@ agno/vectordb/lancedb/lance_db.py,sha256=z603icggxlrCa8wNnDPRitVp-pkVGHbfLHOHmfr
624
630
  agno/vectordb/langchaindb/__init__.py,sha256=BxGs6tcEKTiydbVJL3P5djlnafS5Bbgql3u1k6vhW2w,108
625
631
  agno/vectordb/langchaindb/langchaindb.py,sha256=AS-Jrh7gXKYkSHFiXKiD0kwL-FUFz10VbYksm8UEBAU,6391
626
632
  agno/vectordb/lightrag/__init__.py,sha256=fgQpA8pZW-jEHI91SZ_xgmROmv14oKdwCQZ8LpyipaE,84
627
- agno/vectordb/lightrag/lightrag.py,sha256=twDynNcD3rjd0A0c35B3L2S0FBe7wPXeUG7q37QUz6Q,15007
633
+ agno/vectordb/lightrag/lightrag.py,sha256=9tUX3O51n7jHia9R0VcoiLCfH-v53VZ9Bx96beQrp0k,15196
628
634
  agno/vectordb/llamaindex/__init__.py,sha256=fgdWIntUOX3n5YEPcPfr-yPb2kvmSy5ngQ5_UqAIrgM,103
629
635
  agno/vectordb/llamaindex/llamaindexdb.py,sha256=CAVZehLSSsA_WBvgWpsj-tBoo60f5SHP9E2FIQqKwLc,6114
630
636
  agno/vectordb/milvus/__init__.py,sha256=I9V-Rm-rIYxWdRVIs6bKI-6JSJsyOd1-vvasvVpYHuE,127
631
- agno/vectordb/milvus/milvus.py,sha256=84zcW62UPnf-HT1resKkKpsL2bx6bof6JGSFzaJmCZY,48445
637
+ agno/vectordb/milvus/milvus.py,sha256=QL7U_Zst67ne0u4WX-UaHOX3n82BnDWQqFNh4vOxJGY,50023
632
638
  agno/vectordb/mongodb/__init__.py,sha256=lHIjtTi1h8jaOrMpu_J6LfOVgUaxt1DC6Z7yvyIyWsQ,216
633
639
  agno/vectordb/mongodb/mongodb.py,sha256=cooARUD2myokgkzAbouw4F6lt9BpfIKPBb_azJSo8XM,60346
634
640
  agno/vectordb/pgvector/__init__.py,sha256=Lui0HBzoHPIsKh5QuiT0eyTvYW88nQPfd_723jjHFCk,288
635
641
  agno/vectordb/pgvector/index.py,sha256=qfGgPP33SwZkXLfUcAC_XgQsyZIyggpGS2bfIkjjs-E,495
636
- agno/vectordb/pgvector/pgvector.py,sha256=sfJ_aYaiiWZw0uciH9ZbWhN7YWY4GD3Mu4UJZouzPAE,65236
642
+ agno/vectordb/pgvector/pgvector.py,sha256=g8DxCjboho725nK4qFQZMtBOsU9NjZHchIqq56eTLVM,65224
637
643
  agno/vectordb/pineconedb/__init__.py,sha256=D7iThXtUCxNO0Nyjunv5Z91Jc1vHG1pgAFXthqD1I_w,92
638
644
  agno/vectordb/pineconedb/pineconedb.py,sha256=xtroMvFdRf9BKNSsfwx_TyX5MvnCNuJ_C87ix1a8Xcg,28915
639
645
  agno/vectordb/qdrant/__init__.py,sha256=p08df0_Fq_OXTwkTtTZvtEG8pswuVlgFw5sSZ2uHUNg,106
@@ -661,8 +667,8 @@ agno/workflow/step.py,sha256=AgSugOOoWidfZGFtR5PMpgWSBpIeUQB45vmaUDnV7E8,77919
661
667
  agno/workflow/steps.py,sha256=p1RdyTZIKDYOPdxU7FbsX_vySWehPWaobge76Q_UDac,26462
662
668
  agno/workflow/types.py,sha256=t4304WCKB19QFdV3ixXZICcU8wtBza4EBCIz5Ve6MSQ,18035
663
669
  agno/workflow/workflow.py,sha256=E2_j37VzZAMwV9YPsEtPvpjkdiOVm_uE0OrjmolOf4M,218099
664
- agno-2.4.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
665
- agno-2.4.0.dist-info/METADATA,sha256=MuVlHnxJpmAZOJEvFZCZiu48OboPyx7df3oGriFJCbY,22053
666
- agno-2.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
667
- agno-2.4.0.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
668
- agno-2.4.0.dist-info/RECORD,,
670
+ agno-2.4.2.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
671
+ agno-2.4.2.dist-info/METADATA,sha256=kMP48gzMAXyiRWZWnl_iNvwRICmr02ZytN9_R3fGvGY,22165
672
+ agno-2.4.2.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
673
+ agno-2.4.2.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
674
+ agno-2.4.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5