agno 2.4.0__py3-none-any.whl → 2.4.1__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/db/postgres/postgres.py +25 -12
- agno/db/sqlite/sqlite.py +24 -11
- agno/integrations/discord/client.py +12 -1
- agno/knowledge/knowledge.py +1070 -43
- agno/knowledge/reader/csv_reader.py +231 -8
- agno/knowledge/reader/field_labeled_csv_reader.py +167 -3
- agno/knowledge/reader/reader_factory.py +8 -1
- agno/knowledge/remote_content/__init__.py +29 -0
- agno/knowledge/remote_content/config.py +204 -0
- agno/knowledge/remote_content/remote_content.py +74 -17
- agno/models/base.py +12 -2
- agno/models/cerebras/cerebras.py +34 -2
- agno/models/n1n/__init__.py +3 -0
- agno/models/n1n/n1n.py +57 -0
- agno/models/openai/chat.py +18 -1
- agno/models/perplexity/perplexity.py +2 -0
- agno/os/interfaces/slack/router.py +10 -1
- agno/os/interfaces/whatsapp/router.py +6 -0
- agno/os/routers/components/components.py +10 -1
- agno/os/routers/knowledge/knowledge.py +125 -0
- agno/os/routers/knowledge/schemas.py +12 -0
- agno/run/agent.py +2 -0
- agno/team/team.py +20 -4
- agno/vectordb/pgvector/pgvector.py +3 -3
- {agno-2.4.0.dist-info → agno-2.4.1.dist-info}/METADATA +4 -1
- {agno-2.4.0.dist-info → agno-2.4.1.dist-info}/RECORD +29 -26
- {agno-2.4.0.dist-info → agno-2.4.1.dist-info}/WHEEL +1 -1
- {agno-2.4.0.dist-info → agno-2.4.1.dist-info}/licenses/LICENSE +0 -0
- {agno-2.4.0.dist-info → agno-2.4.1.dist-info}/top_level.txt +0 -0
|
@@ -206,6 +206,113 @@ def attach_routes(router: APIRouter, knowledge_instances: List[Union[Knowledge,
|
|
|
206
206
|
)
|
|
207
207
|
return response
|
|
208
208
|
|
|
209
|
+
@router.post(
|
|
210
|
+
"/knowledge/remote-content",
|
|
211
|
+
response_model=ContentResponseSchema,
|
|
212
|
+
status_code=202,
|
|
213
|
+
operation_id="upload_remote_content",
|
|
214
|
+
summary="Upload Remote Content",
|
|
215
|
+
description=(
|
|
216
|
+
"Upload content from a remote source (S3, GCS, SharePoint, GitHub) to the knowledge base. "
|
|
217
|
+
"Content is processed asynchronously in the background. "
|
|
218
|
+
"Use the /knowledge/config endpoint to see available remote content sources."
|
|
219
|
+
),
|
|
220
|
+
responses={
|
|
221
|
+
202: {
|
|
222
|
+
"description": "Remote content upload accepted for processing",
|
|
223
|
+
"content": {
|
|
224
|
+
"application/json": {
|
|
225
|
+
"example": {
|
|
226
|
+
"id": "content-456",
|
|
227
|
+
"name": "reports/q1-2024.pdf",
|
|
228
|
+
"description": "Q1 Report from S3",
|
|
229
|
+
"metadata": {"source": "s3-docs"},
|
|
230
|
+
"status": "processing",
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
400: {
|
|
236
|
+
"description": "Invalid request - unknown config or missing path",
|
|
237
|
+
"model": BadRequestResponse,
|
|
238
|
+
},
|
|
239
|
+
422: {"description": "Validation error in request body", "model": ValidationErrorResponse},
|
|
240
|
+
},
|
|
241
|
+
)
|
|
242
|
+
async def upload_remote_content(
|
|
243
|
+
request: Request,
|
|
244
|
+
background_tasks: BackgroundTasks,
|
|
245
|
+
config_id: str = Form(..., description="ID of the configured remote content source (from /knowledge/config)"),
|
|
246
|
+
path: str = Form(..., description="Path to file or folder in the remote source"),
|
|
247
|
+
name: Optional[str] = Form(None, description="Content name (auto-generated if not provided)"),
|
|
248
|
+
description: Optional[str] = Form(None, description="Content description"),
|
|
249
|
+
metadata: Optional[str] = Form(None, description="JSON metadata object"),
|
|
250
|
+
reader_id: Optional[str] = Form(None, description="ID of the reader to use for processing"),
|
|
251
|
+
chunker: Optional[str] = Form(None, description="Chunking strategy to apply"),
|
|
252
|
+
chunk_size: Optional[int] = Form(None, description="Chunk size for processing"),
|
|
253
|
+
chunk_overlap: Optional[int] = Form(None, description="Chunk overlap for processing"),
|
|
254
|
+
db_id: Optional[str] = Query(default=None, description="Database ID to use for content storage"),
|
|
255
|
+
):
|
|
256
|
+
knowledge = get_knowledge_instance_by_db_id(knowledge_instances, db_id)
|
|
257
|
+
|
|
258
|
+
if isinstance(knowledge, RemoteKnowledge):
|
|
259
|
+
# TODO: Forward to remote knowledge instance
|
|
260
|
+
raise HTTPException(status_code=501, detail="Remote content upload not yet supported for RemoteKnowledge")
|
|
261
|
+
|
|
262
|
+
# Validate that the config_id exists in configured sources
|
|
263
|
+
config = knowledge._get_remote_config_by_id(config_id)
|
|
264
|
+
if config is None:
|
|
265
|
+
raise HTTPException(
|
|
266
|
+
status_code=400,
|
|
267
|
+
detail=f"Unknown content source: {config_id}. Check /knowledge/config for available sources.",
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
# Parse metadata if provided
|
|
271
|
+
parsed_metadata = None
|
|
272
|
+
if metadata:
|
|
273
|
+
try:
|
|
274
|
+
parsed_metadata = json.loads(metadata)
|
|
275
|
+
except json.JSONDecodeError:
|
|
276
|
+
parsed_metadata = {"value": metadata}
|
|
277
|
+
|
|
278
|
+
# Use the config's factory methods to create the remote content object
|
|
279
|
+
# If path ends with '/', treat as folder, otherwise treat as file
|
|
280
|
+
is_folder = path.endswith("/")
|
|
281
|
+
if is_folder:
|
|
282
|
+
if hasattr(config, "folder"):
|
|
283
|
+
remote_content = config.folder(path.rstrip("/"))
|
|
284
|
+
else:
|
|
285
|
+
raise HTTPException(status_code=400, detail=f"Config {config_id} does not support folder uploads")
|
|
286
|
+
else:
|
|
287
|
+
if hasattr(config, "file"):
|
|
288
|
+
remote_content = config.file(path)
|
|
289
|
+
else:
|
|
290
|
+
raise HTTPException(status_code=400, detail=f"Config {config_id} does not support file uploads")
|
|
291
|
+
|
|
292
|
+
# Set name from path if not provided
|
|
293
|
+
content_name = name or path
|
|
294
|
+
|
|
295
|
+
content = Content(
|
|
296
|
+
name=content_name,
|
|
297
|
+
description=description,
|
|
298
|
+
metadata=parsed_metadata,
|
|
299
|
+
remote_content=remote_content,
|
|
300
|
+
)
|
|
301
|
+
content_hash = knowledge._build_content_hash(content)
|
|
302
|
+
content.content_hash = content_hash
|
|
303
|
+
content.id = generate_id(content_hash)
|
|
304
|
+
|
|
305
|
+
background_tasks.add_task(process_content, knowledge, content, reader_id, chunker, chunk_size, chunk_overlap)
|
|
306
|
+
|
|
307
|
+
response = ContentResponseSchema(
|
|
308
|
+
id=content.id,
|
|
309
|
+
name=content_name,
|
|
310
|
+
description=description,
|
|
311
|
+
metadata=parsed_metadata,
|
|
312
|
+
status=ContentStatus.PROCESSING,
|
|
313
|
+
)
|
|
314
|
+
return response
|
|
315
|
+
|
|
209
316
|
@router.patch(
|
|
210
317
|
"/knowledge/content/{content_id}",
|
|
211
318
|
response_model=ContentResponseSchema,
|
|
@@ -1048,12 +1155,30 @@ def attach_routes(router: APIRouter, knowledge_instances: List[Union[Knowledge,
|
|
|
1048
1155
|
)
|
|
1049
1156
|
)
|
|
1050
1157
|
filters = await knowledge.aget_valid_filters()
|
|
1158
|
+
|
|
1159
|
+
# Get remote content sources if available
|
|
1160
|
+
remote_content_sources = None
|
|
1161
|
+
if hasattr(knowledge, "_get_remote_configs") and callable(knowledge._get_remote_configs):
|
|
1162
|
+
remote_configs = knowledge._get_remote_configs()
|
|
1163
|
+
if remote_configs:
|
|
1164
|
+
from agno.os.routers.knowledge.schemas import RemoteContentSourceSchema
|
|
1165
|
+
|
|
1166
|
+
remote_content_sources = [
|
|
1167
|
+
RemoteContentSourceSchema(
|
|
1168
|
+
id=config.id,
|
|
1169
|
+
name=config.name,
|
|
1170
|
+
type=config.__class__.__name__.replace("Config", "").lower(),
|
|
1171
|
+
metadata=config.metadata,
|
|
1172
|
+
)
|
|
1173
|
+
for config in remote_configs
|
|
1174
|
+
]
|
|
1051
1175
|
return ConfigResponseSchema(
|
|
1052
1176
|
readers=reader_schemas,
|
|
1053
1177
|
vector_dbs=vector_dbs,
|
|
1054
1178
|
readersForType=types_of_readers,
|
|
1055
1179
|
chunkers=chunkers_dict,
|
|
1056
1180
|
filters=filters,
|
|
1181
|
+
remote_content_sources=remote_content_sources,
|
|
1057
1182
|
)
|
|
1058
1183
|
|
|
1059
1184
|
return router
|
|
@@ -170,9 +170,21 @@ class VectorSearchRequestSchema(BaseModel):
|
|
|
170
170
|
)
|
|
171
171
|
|
|
172
172
|
|
|
173
|
+
class RemoteContentSourceSchema(BaseModel):
|
|
174
|
+
"""Schema for remote content source configuration."""
|
|
175
|
+
|
|
176
|
+
id: str = Field(..., description="Unique identifier for the content source")
|
|
177
|
+
name: str = Field(..., description="Display name for the content source")
|
|
178
|
+
type: str = Field(..., description="Type of content source (s3, gcs, sharepoint, github)")
|
|
179
|
+
metadata: Optional[Dict[str, Any]] = Field(None, description="Custom metadata for the content source")
|
|
180
|
+
|
|
181
|
+
|
|
173
182
|
class ConfigResponseSchema(BaseModel):
|
|
174
183
|
readers: Optional[Dict[str, ReaderSchema]] = Field(None, description="Available content readers")
|
|
175
184
|
readersForType: Optional[Dict[str, List[str]]] = Field(None, description="Mapping of content types to reader IDs")
|
|
176
185
|
chunkers: Optional[Dict[str, ChunkerSchema]] = Field(None, description="Available chunking strategies")
|
|
177
186
|
filters: Optional[List[str]] = Field(None, description="Available filter tags")
|
|
178
187
|
vector_dbs: Optional[List[VectorDbSchema]] = Field(None, description="Configured vector databases")
|
|
188
|
+
remote_content_sources: Optional[List[RemoteContentSourceSchema]] = Field(
|
|
189
|
+
None, description="Configured remote content sources (S3, GCS, SharePoint, GitHub)"
|
|
190
|
+
)
|
agno/run/agent.py
CHANGED
|
@@ -485,6 +485,8 @@ class CompressionCompletedEvent(BaseAgentRunEvent):
|
|
|
485
485
|
@dataclass
|
|
486
486
|
class CustomEvent(BaseAgentRunEvent):
|
|
487
487
|
event: str = RunEvent.custom_event.value
|
|
488
|
+
# tool_call_id for ToolExecution
|
|
489
|
+
tool_call_id: Optional[str] = None
|
|
488
490
|
|
|
489
491
|
def __init__(self, **kwargs):
|
|
490
492
|
# Store arbitrary attributes directly on the instance
|
agno/team/team.py
CHANGED
|
@@ -7852,7 +7852,7 @@ class Team:
|
|
|
7852
7852
|
stream_events=stream_events or self.stream_member_events,
|
|
7853
7853
|
debug_mode=debug_mode,
|
|
7854
7854
|
knowledge_filters=run_context.knowledge_filters
|
|
7855
|
-
if not
|
|
7855
|
+
if not agent.knowledge_filters and agent.knowledge
|
|
7856
7856
|
else None,
|
|
7857
7857
|
dependencies=run_context.dependencies,
|
|
7858
7858
|
add_dependencies_to_context=add_dependencies_to_context,
|
|
@@ -7877,7 +7877,7 @@ class Team:
|
|
|
7877
7877
|
finally:
|
|
7878
7878
|
_process_delegate_task_to_member(
|
|
7879
7879
|
member_agent_run_response,
|
|
7880
|
-
|
|
7880
|
+
agent,
|
|
7881
7881
|
member_agent_task, # type: ignore
|
|
7882
7882
|
member_session_state_copy, # type: ignore
|
|
7883
7883
|
)
|
|
@@ -7915,10 +7915,15 @@ class Team:
|
|
|
7915
7915
|
current_agent = member_agent
|
|
7916
7916
|
member_agent_task, history = _setup_delegate_task_to_member(member_agent=current_agent, task=task)
|
|
7917
7917
|
|
|
7918
|
-
async def run_member_agent(
|
|
7918
|
+
async def run_member_agent(
|
|
7919
|
+
member_agent=current_agent,
|
|
7920
|
+
member_agent_task=member_agent_task,
|
|
7921
|
+
history=history,
|
|
7922
|
+
member_agent_index=member_agent_index,
|
|
7923
|
+
) -> str:
|
|
7919
7924
|
member_session_state_copy = copy(run_context.session_state)
|
|
7920
7925
|
|
|
7921
|
-
member_agent_run_response = await
|
|
7926
|
+
member_agent_run_response = await member_agent.arun(
|
|
7922
7927
|
input=member_agent_task if not history else history,
|
|
7923
7928
|
user_id=user_id,
|
|
7924
7929
|
# All members have the same session_id
|
|
@@ -8536,6 +8541,7 @@ class Team:
|
|
|
8536
8541
|
# --- Handle Members reconstruction ---
|
|
8537
8542
|
members: Optional[List[Union[Agent, "Team"]]] = None
|
|
8538
8543
|
from agno.agent import get_agent_by_id
|
|
8544
|
+
from agno.team import get_team_by_id
|
|
8539
8545
|
|
|
8540
8546
|
if "members" in config and config["members"]:
|
|
8541
8547
|
members = []
|
|
@@ -8551,6 +8557,16 @@ class Team:
|
|
|
8551
8557
|
members.append(agent)
|
|
8552
8558
|
else:
|
|
8553
8559
|
log_warning(f"Agent not found: {member_data['agent_id']}")
|
|
8560
|
+
elif member_type == "team":
|
|
8561
|
+
# Handle nested teams as members
|
|
8562
|
+
if db is None:
|
|
8563
|
+
log_warning(f"Cannot load member team {member_data['team_id']}: db is None")
|
|
8564
|
+
continue
|
|
8565
|
+
nested_team = get_team_by_id(id=member_data["team_id"], db=db, registry=registry)
|
|
8566
|
+
if nested_team:
|
|
8567
|
+
members.append(nested_team)
|
|
8568
|
+
else:
|
|
8569
|
+
log_warning(f"Team not found: {member_data['team_id']}")
|
|
8554
8570
|
|
|
8555
8571
|
# --- Handle reasoning_model reconstruction ---
|
|
8556
8572
|
# TODO: implement reasoning model deserialization
|
|
@@ -379,7 +379,7 @@ class PgVector(VectorDb):
|
|
|
379
379
|
record = {
|
|
380
380
|
"id": record_id,
|
|
381
381
|
"name": doc.name,
|
|
382
|
-
"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":
|
|
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":
|
|
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.
|
|
3
|
+
Version: 2.4.1
|
|
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"
|
|
@@ -79,7 +79,7 @@ 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
81
|
agno/db/postgres/async_postgres.py,sha256=T2laMgg8EMKh1QHgUt6P8L2BPrp_wHZ3kIlKRmWx7uk,128917
|
|
82
|
-
agno/db/postgres/postgres.py,sha256=
|
|
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
|
|
@@ -99,7 +99,7 @@ agno/db/singlestore/utils.py,sha256=vJ6QM-wbJBzA8l5ULYbJ5KLB9c3-GZqtb0NWdy5gg2c,
|
|
|
99
99
|
agno/db/sqlite/__init__.py,sha256=09V3i4y0-tBjt60--57ivZ__SaaS67GCsDT4Apzv-5Y,138
|
|
100
100
|
agno/db/sqlite/async_sqlite.py,sha256=196uXcH--Nl1RhtifpKRSAd43cFNcEltsCpQghvJEws,137639
|
|
101
101
|
agno/db/sqlite/schemas.py,sha256=uOhtTee4bdmDyl3xsGW8cnVDKB-j0-fZ0vVLikzMY90,12239
|
|
102
|
-
agno/db/sqlite/sqlite.py,sha256=
|
|
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=
|
|
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=
|
|
130
|
+
agno/knowledge/knowledge.py,sha256=UvGJZe9co_a2N8HWC42-gu6v3g9OFUnT1rDtHHGgp1c,190602
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
185
|
-
agno/knowledge/remote_content/
|
|
184
|
+
agno/knowledge/remote_content/__init__.py,sha256=8TZGVpV65f9d-HMdCp-zZumq7_2DjtLUeoqvU0PvqvU,564
|
|
185
|
+
agno/knowledge/remote_content/config.py,sha256=Y425rBNHKKyfe9otuE4JOQ4vu5i1khzW7nUmxPoju5Y,5927
|
|
186
|
+
agno/knowledge/remote_content/remote_content.py,sha256=_1D57epkO5SYcclDer2UXbBfSyYadOva2yrSUaIVx6c,4775
|
|
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=
|
|
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=
|
|
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,6 +266,8 @@ 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
|
|
@@ -274,13 +277,13 @@ agno/models/nvidia/nvidia.py,sha256=Q81Ey-IJFefOmlrjbBgwNXZ2ARey-j6pXPJHItaE8uY,
|
|
|
274
277
|
agno/models/ollama/__init__.py,sha256=TIhwxG7ek3eyfoKTLoZQXwdgzcIngYKjbjSlkf2gkWE,72
|
|
275
278
|
agno/models/ollama/chat.py,sha256=Szc8rEWRvQ2CW50V5xAuccX4Ozc1BAV9wUPbFJhY_J8,16862
|
|
276
279
|
agno/models/openai/__init__.py,sha256=OssVgQRpsriU6aJZ3lIp_jFuqvX6y78L4Fd3uTlmI3E,225
|
|
277
|
-
agno/models/openai/chat.py,sha256=
|
|
280
|
+
agno/models/openai/chat.py,sha256=TiAE0Q8_Wo3IO3D0_UJJ9g5OxWOwoBly40UefHAtEow,42415
|
|
278
281
|
agno/models/openai/like.py,sha256=wmw9PfAVqluBs4MMY73dgjelKn1yl5JDKyCRvaNFjFw,745
|
|
279
282
|
agno/models/openai/responses.py,sha256=U2A-Jh80QcMBFG7acL_ph2TMOoRBK9GlK3ZtL9Ni_CY,49309
|
|
280
283
|
agno/models/openrouter/__init__.py,sha256=ZpZhNyy_EGSXp58uC9e2iyjnxBctql7GaY8rUG-599I,90
|
|
281
284
|
agno/models/openrouter/openrouter.py,sha256=cZGK8ZD_cs4cXhrnSq2OLXR0yXMbBUric5n2coFMHvI,5689
|
|
282
285
|
agno/models/perplexity/__init__.py,sha256=JNmOElDLwcZ9_Lk5owkEdgwmAhaH3YJ-VJqOI8rgp5c,90
|
|
283
|
-
agno/models/perplexity/perplexity.py,sha256=
|
|
286
|
+
agno/models/perplexity/perplexity.py,sha256=1u1Q3ZM4LRY1xclOVvz862Tc6stA8od3wWoCBPsZ7y8,7811
|
|
284
287
|
agno/models/portkey/__init__.py,sha256=CjGmltOuDlYfuJgpYHmfRkKiIS9W9MH4oYaGKaNNZeM,71
|
|
285
288
|
agno/models/portkey/portkey.py,sha256=eKB0SA8t2W7l_9YkDV0hgLHBnFn19eMKU8gKixCdfSI,2993
|
|
286
289
|
agno/models/requesty/__init__.py,sha256=pcvbjspqNFhjxpbBcNki1tR6GoWsqU3idQuoPe1TiAg,82
|
|
@@ -321,11 +324,11 @@ agno/os/interfaces/agui/agui.py,sha256=KjQ3qrTCtFWDcHk3ViPguV6FvSuYKrAwENbDzUCcs
|
|
|
321
324
|
agno/os/interfaces/agui/router.py,sha256=HmYWb2PcBNeWpq6ft-dfdLlSyEHXLaM9CHaVBS4wU_8,5645
|
|
322
325
|
agno/os/interfaces/agui/utils.py,sha256=veRYnk8EVSuF2owJjNFUhQRsyqbxIlFQnAqjB0KY0mU,23645
|
|
323
326
|
agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
|
|
324
|
-
agno/os/interfaces/slack/router.py,sha256=
|
|
327
|
+
agno/os/interfaces/slack/router.py,sha256=PqlObVE396in76wN5bef8YxeFWYANwlcrvw0Fau3vGY,6402
|
|
325
328
|
agno/os/interfaces/slack/security.py,sha256=nMbW_0g-G_DEMbCQOD8C3PYrRPIpB2cyM6P-xS6GHYk,917
|
|
326
329
|
agno/os/interfaces/slack/slack.py,sha256=kX5u5sUa0ITOc_Yz65SBofAIUrZWB36Bz5d3oz3fsYo,1472
|
|
327
330
|
agno/os/interfaces/whatsapp/__init__.py,sha256=-sD2W00qj8hrx72ATVMtaDc7GfAsaCQJMlnRjYPwisg,82
|
|
328
|
-
agno/os/interfaces/whatsapp/router.py,sha256=
|
|
331
|
+
agno/os/interfaces/whatsapp/router.py,sha256=G4XgtDdDyjOrSTDX54rPLxt6-Hc6x3HNx-OSNOH1zuo,11124
|
|
329
332
|
agno/os/interfaces/whatsapp/security.py,sha256=0GYdG28yeSpV47nMWASaFSTiGESSstcFAeL6amobvFE,1772
|
|
330
333
|
agno/os/interfaces/whatsapp/whatsapp.py,sha256=N47r2UU9gPdqiT6emqorBv7TB-DaPTSm3PKWtX_hUcY,1262
|
|
331
334
|
agno/os/middleware/__init__.py,sha256=ttLwyXLgEZBZp0N7j2j_WcvAYNcznRgcN4YyWZfQA4Y,231
|
|
@@ -339,14 +342,14 @@ agno/os/routers/agents/__init__.py,sha256=nr1H0Mp7NlWPnvu0ccaHVSPHz-lXg43TRMApkU
|
|
|
339
342
|
agno/os/routers/agents/router.py,sha256=zfj9JuruHiucl-3jqOTp0sWkHydI7rHNCD20q3Hej-c,26615
|
|
340
343
|
agno/os/routers/agents/schema.py,sha256=4jVKsM-KVSQEwN4EIzUT3fzs7OF7QQ6sdS8f40_IGPk,12940
|
|
341
344
|
agno/os/routers/components/__init__.py,sha256=yzvMCbvRYU2pMRWNNgDH9hmVq4jhMqsUG2aIeEyNcpE,109
|
|
342
|
-
agno/os/routers/components/components.py,sha256=
|
|
345
|
+
agno/os/routers/components/components.py,sha256=DlkIli9GxrcKEAUyYlPSHjyEH8v1eopRGtx0943LEgY,18733
|
|
343
346
|
agno/os/routers/evals/__init__.py,sha256=3s0M-Ftg5A3rFyRfTATs-0aNA6wcbj_5tCvtwH9gORQ,87
|
|
344
347
|
agno/os/routers/evals/evals.py,sha256=9DErwITEV6O1BAr28asB29Yvgy8C5wtzQyz-ys-yJzw,23478
|
|
345
348
|
agno/os/routers/evals/schemas.py,sha256=ouz-tsFNsPMnYE4Y7Cti_ZbBHsL6XiXFQVXz97BYe_k,7767
|
|
346
349
|
agno/os/routers/evals/utils.py,sha256=MjOPY0xNdJZY04_4YQxsv3FPCsKTMDix8jyKDWwn6kc,8367
|
|
347
350
|
agno/os/routers/knowledge/__init__.py,sha256=ZSqMQ8X7C_oYn8xt7NaYlriarWUpHgaWDyHXOWooMaU,105
|
|
348
|
-
agno/os/routers/knowledge/knowledge.py,sha256=
|
|
349
|
-
agno/os/routers/knowledge/schemas.py,sha256=
|
|
351
|
+
agno/os/routers/knowledge/knowledge.py,sha256=QGKEJQwxwOP8NyEMdNZ3_W6g0atw4lzI4iDsbU5XmPU,56969
|
|
352
|
+
agno/os/routers/knowledge/schemas.py,sha256=qQG-TnExau0kOZyx-DaJBaOxUQmGdbd5NTNXax0j86Q,9512
|
|
350
353
|
agno/os/routers/memory/__init__.py,sha256=9hrYFc1dkbsLBqKfqyfioQeLX9TTbLrJx6lWDKNNWbc,93
|
|
351
354
|
agno/os/routers/memory/memory.py,sha256=SAXNlJTsQ-orSQymlQ-XVgN6RLlui3W9tB0NVSOWLrA,32854
|
|
352
355
|
agno/os/routers/memory/schemas.py,sha256=D9g7cp--ds0e1M2omoJ8chuMA8agNUJaYqMHWgWElOE,4658
|
|
@@ -384,7 +387,7 @@ agno/registry/registry.py,sha256=fMNOhDBKqhXuZyDqSu6jeaZu4JJ5JT4vaEUBY_KA8OQ,243
|
|
|
384
387
|
agno/remote/__init__.py,sha256=zgDS3cO_6VavICojsmG8opJ49wLwydftGE6i6_yPDTo,66
|
|
385
388
|
agno/remote/base.py,sha256=D2TDs7rmlbxgbLEArga7jq9IgdKSzhs_jzoUO43WDQo,23358
|
|
386
389
|
agno/run/__init__.py,sha256=GZwloCe48rEAjkb_xOJ7piOjICmHawiR1d4SqBtUd-k,222
|
|
387
|
-
agno/run/agent.py,sha256=
|
|
390
|
+
agno/run/agent.py,sha256=FUddcoLqmcAVSNSoLjE6eAjDYiPPtluUmpPkoECWDj0,31741
|
|
388
391
|
agno/run/base.py,sha256=ndWSxzghNERjVMRGCs-4PlZ3SXO8SvcugpekIzZDFV0,10099
|
|
389
392
|
agno/run/cancel.py,sha256=Tyxg4lxwSvO2wSZDG4OF82ORQU6MYBu94YLqrEnK09Y,3019
|
|
390
393
|
agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
|
|
@@ -411,7 +414,7 @@ agno/skills/loaders/base.py,sha256=Syt6lIOe-m_Kz68ndwuVed3wZFAPvYDDnJkhypazYJ8,7
|
|
|
411
414
|
agno/skills/loaders/local.py,sha256=7budE7d-JG86XyqnRwo495yiYWDjj16yDV67aiSacOQ,7478
|
|
412
415
|
agno/team/__init__.py,sha256=Ff5VMcZnkimttdCcRFEL852JgInlWCkpdlgyfhXfIo8,971
|
|
413
416
|
agno/team/remote.py,sha256=BgUEQsTFA4tehDas1YO7lwQCj3cLJrxfoSFVOYm_1po,16979
|
|
414
|
-
agno/team/team.py,sha256=
|
|
417
|
+
agno/team/team.py,sha256=EZRrJuoWu_k2zp2l7Y_6pRXHYah3TfH3RvR75Ckgab8,476539
|
|
415
418
|
agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
|
|
416
419
|
agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
|
|
417
420
|
agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
|
|
@@ -633,7 +636,7 @@ agno/vectordb/mongodb/__init__.py,sha256=lHIjtTi1h8jaOrMpu_J6LfOVgUaxt1DC6Z7yvyI
|
|
|
633
636
|
agno/vectordb/mongodb/mongodb.py,sha256=cooARUD2myokgkzAbouw4F6lt9BpfIKPBb_azJSo8XM,60346
|
|
634
637
|
agno/vectordb/pgvector/__init__.py,sha256=Lui0HBzoHPIsKh5QuiT0eyTvYW88nQPfd_723jjHFCk,288
|
|
635
638
|
agno/vectordb/pgvector/index.py,sha256=qfGgPP33SwZkXLfUcAC_XgQsyZIyggpGS2bfIkjjs-E,495
|
|
636
|
-
agno/vectordb/pgvector/pgvector.py,sha256=
|
|
639
|
+
agno/vectordb/pgvector/pgvector.py,sha256=g8DxCjboho725nK4qFQZMtBOsU9NjZHchIqq56eTLVM,65224
|
|
637
640
|
agno/vectordb/pineconedb/__init__.py,sha256=D7iThXtUCxNO0Nyjunv5Z91Jc1vHG1pgAFXthqD1I_w,92
|
|
638
641
|
agno/vectordb/pineconedb/pineconedb.py,sha256=xtroMvFdRf9BKNSsfwx_TyX5MvnCNuJ_C87ix1a8Xcg,28915
|
|
639
642
|
agno/vectordb/qdrant/__init__.py,sha256=p08df0_Fq_OXTwkTtTZvtEG8pswuVlgFw5sSZ2uHUNg,106
|
|
@@ -661,8 +664,8 @@ agno/workflow/step.py,sha256=AgSugOOoWidfZGFtR5PMpgWSBpIeUQB45vmaUDnV7E8,77919
|
|
|
661
664
|
agno/workflow/steps.py,sha256=p1RdyTZIKDYOPdxU7FbsX_vySWehPWaobge76Q_UDac,26462
|
|
662
665
|
agno/workflow/types.py,sha256=t4304WCKB19QFdV3ixXZICcU8wtBza4EBCIz5Ve6MSQ,18035
|
|
663
666
|
agno/workflow/workflow.py,sha256=E2_j37VzZAMwV9YPsEtPvpjkdiOVm_uE0OrjmolOf4M,218099
|
|
664
|
-
agno-2.4.
|
|
665
|
-
agno-2.4.
|
|
666
|
-
agno-2.4.
|
|
667
|
-
agno-2.4.
|
|
668
|
-
agno-2.4.
|
|
667
|
+
agno-2.4.1.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
668
|
+
agno-2.4.1.dist-info/METADATA,sha256=9B6n3OYtUSsRbmUsjx3hs9PyOEQKQIbPLEIDRp_7-So,22165
|
|
669
|
+
agno-2.4.1.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
670
|
+
agno-2.4.1.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
|
|
671
|
+
agno-2.4.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|