agno 2.3.7__py3-none-any.whl → 2.3.9__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 +391 -335
- agno/db/mongo/async_mongo.py +0 -24
- agno/db/mongo/mongo.py +0 -16
- agno/db/mysql/__init__.py +2 -1
- agno/db/mysql/async_mysql.py +2888 -0
- agno/db/mysql/mysql.py +17 -27
- agno/db/mysql/utils.py +139 -6
- agno/db/postgres/async_postgres.py +10 -26
- agno/db/postgres/postgres.py +7 -25
- agno/db/redis/redis.py +0 -4
- agno/db/schemas/evals.py +1 -0
- agno/db/singlestore/singlestore.py +5 -12
- agno/db/sqlite/async_sqlite.py +2 -26
- agno/db/sqlite/sqlite.py +0 -20
- agno/eval/__init__.py +10 -0
- agno/eval/agent_as_judge.py +860 -0
- agno/eval/base.py +29 -0
- agno/eval/utils.py +2 -1
- agno/exceptions.py +7 -0
- agno/knowledge/embedder/openai.py +8 -8
- agno/knowledge/knowledge.py +1142 -176
- agno/media.py +22 -6
- agno/models/aws/claude.py +8 -7
- agno/models/base.py +160 -11
- agno/models/deepseek/deepseek.py +67 -0
- agno/models/google/gemini.py +65 -11
- agno/models/google/utils.py +22 -0
- agno/models/message.py +2 -0
- agno/models/openai/chat.py +4 -0
- agno/models/openai/responses.py +3 -2
- agno/os/app.py +64 -74
- agno/os/interfaces/a2a/router.py +3 -4
- agno/os/interfaces/a2a/utils.py +1 -1
- agno/os/interfaces/agui/router.py +2 -0
- agno/os/middleware/jwt.py +8 -6
- agno/os/router.py +3 -1607
- agno/os/routers/agents/__init__.py +3 -0
- agno/os/routers/agents/router.py +581 -0
- agno/os/routers/agents/schema.py +261 -0
- agno/os/routers/evals/evals.py +26 -6
- agno/os/routers/evals/schemas.py +34 -2
- agno/os/routers/evals/utils.py +101 -20
- agno/os/routers/knowledge/knowledge.py +1 -1
- agno/os/routers/teams/__init__.py +3 -0
- agno/os/routers/teams/router.py +496 -0
- agno/os/routers/teams/schema.py +257 -0
- agno/os/routers/workflows/__init__.py +3 -0
- agno/os/routers/workflows/router.py +545 -0
- agno/os/routers/workflows/schema.py +75 -0
- agno/os/schema.py +1 -559
- agno/os/utils.py +139 -2
- agno/team/team.py +159 -100
- agno/tools/file_generation.py +12 -6
- agno/tools/firecrawl.py +15 -7
- agno/tools/workflow.py +8 -1
- agno/utils/hooks.py +64 -5
- agno/utils/http.py +2 -2
- agno/utils/media.py +11 -1
- agno/utils/print_response/agent.py +8 -0
- agno/utils/print_response/team.py +8 -0
- agno/vectordb/pgvector/pgvector.py +88 -51
- agno/workflow/parallel.py +11 -5
- agno/workflow/step.py +17 -5
- agno/workflow/types.py +38 -2
- agno/workflow/workflow.py +12 -4
- {agno-2.3.7.dist-info → agno-2.3.9.dist-info}/METADATA +8 -3
- {agno-2.3.7.dist-info → agno-2.3.9.dist-info}/RECORD +70 -58
- agno/tools/memori.py +0 -339
- {agno-2.3.7.dist-info → agno-2.3.9.dist-info}/WHEEL +0 -0
- {agno-2.3.7.dist-info → agno-2.3.9.dist-info}/licenses/LICENSE +0 -0
- {agno-2.3.7.dist-info → agno-2.3.9.dist-info}/top_level.txt +0 -0
agno/db/mongo/async_mongo.py
CHANGED
|
@@ -2265,14 +2265,6 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2265
2265
|
if trace.workflow_id is not None:
|
|
2266
2266
|
update_values["workflow_id"] = trace.workflow_id
|
|
2267
2267
|
|
|
2268
|
-
log_debug(
|
|
2269
|
-
f" Updating trace with context: run_id={update_values.get('run_id', 'unchanged')}, "
|
|
2270
|
-
f"session_id={update_values.get('session_id', 'unchanged')}, "
|
|
2271
|
-
f"user_id={update_values.get('user_id', 'unchanged')}, "
|
|
2272
|
-
f"agent_id={update_values.get('agent_id', 'unchanged')}, "
|
|
2273
|
-
f"team_id={update_values.get('team_id', 'unchanged')}, "
|
|
2274
|
-
)
|
|
2275
|
-
|
|
2276
2268
|
await collection.update_one({"trace_id": trace.trace_id}, {"$set": update_values})
|
|
2277
2269
|
else:
|
|
2278
2270
|
trace_dict = trace.to_dict()
|
|
@@ -2380,11 +2372,6 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2380
2372
|
try:
|
|
2381
2373
|
from agno.tracing.schemas import Trace as TraceSchema
|
|
2382
2374
|
|
|
2383
|
-
log_debug(
|
|
2384
|
-
f"get_traces called with filters: run_id={run_id}, session_id={session_id}, "
|
|
2385
|
-
f"user_id={user_id}, agent_id={agent_id}, page={page}, limit={limit}"
|
|
2386
|
-
)
|
|
2387
|
-
|
|
2388
2375
|
collection = await self._get_collection(table_type="traces")
|
|
2389
2376
|
if collection is None:
|
|
2390
2377
|
log_debug("Traces collection not found")
|
|
@@ -2398,7 +2385,6 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2398
2385
|
if run_id:
|
|
2399
2386
|
query["run_id"] = run_id
|
|
2400
2387
|
if session_id:
|
|
2401
|
-
log_debug(f"Filtering by session_id={session_id}")
|
|
2402
2388
|
query["session_id"] = session_id
|
|
2403
2389
|
if user_id:
|
|
2404
2390
|
query["user_id"] = user_id
|
|
@@ -2420,14 +2406,12 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2420
2406
|
|
|
2421
2407
|
# Get total count
|
|
2422
2408
|
total_count = await collection.count_documents(query)
|
|
2423
|
-
log_debug(f"Total matching traces: {total_count}")
|
|
2424
2409
|
|
|
2425
2410
|
# Apply pagination
|
|
2426
2411
|
skip = ((page or 1) - 1) * (limit or 20)
|
|
2427
2412
|
cursor = collection.find(query).sort("start_time", -1).skip(skip).limit(limit or 20)
|
|
2428
2413
|
|
|
2429
2414
|
results = await cursor.to_list(length=None)
|
|
2430
|
-
log_debug(f"Returning page {page} with {len(results)} traces")
|
|
2431
2415
|
|
|
2432
2416
|
traces = []
|
|
2433
2417
|
for row in results:
|
|
@@ -2481,12 +2465,6 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2481
2465
|
workflow_id, first_trace_at, last_trace_at.
|
|
2482
2466
|
"""
|
|
2483
2467
|
try:
|
|
2484
|
-
log_debug(
|
|
2485
|
-
f"get_trace_stats called with filters: user_id={user_id}, agent_id={agent_id}, "
|
|
2486
|
-
f"workflow_id={workflow_id}, team_id={team_id}, "
|
|
2487
|
-
f"start_time={start_time}, end_time={end_time}, page={page}, limit={limit}"
|
|
2488
|
-
)
|
|
2489
|
-
|
|
2490
2468
|
collection = await self._get_collection(table_type="traces")
|
|
2491
2469
|
if collection is None:
|
|
2492
2470
|
log_debug("Traces collection not found")
|
|
@@ -2532,7 +2510,6 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2532
2510
|
count_pipeline = pipeline + [{"$count": "total"}]
|
|
2533
2511
|
count_result = await collection.aggregate(count_pipeline).to_list(length=1)
|
|
2534
2512
|
total_count = count_result[0]["total"] if count_result else 0
|
|
2535
|
-
log_debug(f"Total matching sessions: {total_count}")
|
|
2536
2513
|
|
|
2537
2514
|
# Apply pagination
|
|
2538
2515
|
skip = ((page or 1) - 1) * (limit or 20)
|
|
@@ -2540,7 +2517,6 @@ class AsyncMongoDb(AsyncBaseDb):
|
|
|
2540
2517
|
pipeline.append({"$limit": limit or 20})
|
|
2541
2518
|
|
|
2542
2519
|
results = await collection.aggregate(pipeline).to_list(length=None)
|
|
2543
|
-
log_debug(f"Returning page {page} with {len(results)} session stats")
|
|
2544
2520
|
|
|
2545
2521
|
# Convert to list of dicts with datetime objects
|
|
2546
2522
|
stats_list = []
|
agno/db/mongo/mongo.py
CHANGED
|
@@ -2217,11 +2217,6 @@ class MongoDb(BaseDb):
|
|
|
2217
2217
|
try:
|
|
2218
2218
|
from agno.tracing.schemas import Trace as TraceSchema
|
|
2219
2219
|
|
|
2220
|
-
log_debug(
|
|
2221
|
-
f"get_traces called with filters: run_id={run_id}, session_id={session_id}, "
|
|
2222
|
-
f"user_id={user_id}, agent_id={agent_id}, page={page}, limit={limit}"
|
|
2223
|
-
)
|
|
2224
|
-
|
|
2225
2220
|
collection = self._get_collection(table_type="traces")
|
|
2226
2221
|
if collection is None:
|
|
2227
2222
|
log_debug("Traces collection not found")
|
|
@@ -2235,7 +2230,6 @@ class MongoDb(BaseDb):
|
|
|
2235
2230
|
if run_id:
|
|
2236
2231
|
query["run_id"] = run_id
|
|
2237
2232
|
if session_id:
|
|
2238
|
-
log_debug(f"Filtering by session_id={session_id}")
|
|
2239
2233
|
query["session_id"] = session_id
|
|
2240
2234
|
if user_id:
|
|
2241
2235
|
query["user_id"] = user_id
|
|
@@ -2257,14 +2251,12 @@ class MongoDb(BaseDb):
|
|
|
2257
2251
|
|
|
2258
2252
|
# Get total count
|
|
2259
2253
|
total_count = collection.count_documents(query)
|
|
2260
|
-
log_debug(f"Total matching traces: {total_count}")
|
|
2261
2254
|
|
|
2262
2255
|
# Apply pagination
|
|
2263
2256
|
skip = ((page or 1) - 1) * (limit or 20)
|
|
2264
2257
|
cursor = collection.find(query).sort("start_time", -1).skip(skip).limit(limit or 20)
|
|
2265
2258
|
|
|
2266
2259
|
results = list(cursor)
|
|
2267
|
-
log_debug(f"Returning page {page} with {len(results)} traces")
|
|
2268
2260
|
|
|
2269
2261
|
traces = []
|
|
2270
2262
|
for row in results:
|
|
@@ -2318,12 +2310,6 @@ class MongoDb(BaseDb):
|
|
|
2318
2310
|
workflow_id, first_trace_at, last_trace_at.
|
|
2319
2311
|
"""
|
|
2320
2312
|
try:
|
|
2321
|
-
log_debug(
|
|
2322
|
-
f"get_trace_stats called with filters: user_id={user_id}, agent_id={agent_id}, "
|
|
2323
|
-
f"workflow_id={workflow_id}, team_id={team_id}, "
|
|
2324
|
-
f"start_time={start_time}, end_time={end_time}, page={page}, limit={limit}"
|
|
2325
|
-
)
|
|
2326
|
-
|
|
2327
2313
|
collection = self._get_collection(table_type="traces")
|
|
2328
2314
|
if collection is None:
|
|
2329
2315
|
log_debug("Traces collection not found")
|
|
@@ -2369,7 +2355,6 @@ class MongoDb(BaseDb):
|
|
|
2369
2355
|
count_pipeline = pipeline + [{"$count": "total"}]
|
|
2370
2356
|
count_result = list(collection.aggregate(count_pipeline))
|
|
2371
2357
|
total_count = count_result[0]["total"] if count_result else 0
|
|
2372
|
-
log_debug(f"Total matching sessions: {total_count}")
|
|
2373
2358
|
|
|
2374
2359
|
# Apply pagination
|
|
2375
2360
|
skip = ((page or 1) - 1) * (limit or 20)
|
|
@@ -2377,7 +2362,6 @@ class MongoDb(BaseDb):
|
|
|
2377
2362
|
pipeline.append({"$limit": limit or 20})
|
|
2378
2363
|
|
|
2379
2364
|
results = list(collection.aggregate(pipeline))
|
|
2380
|
-
log_debug(f"Returning page {page} with {len(results)} session stats")
|
|
2381
2365
|
|
|
2382
2366
|
# Convert to list of dicts with datetime objects
|
|
2383
2367
|
stats_list = []
|
agno/db/mysql/__init__.py
CHANGED