agno 2.4.7__py3-none-any.whl → 2.4.8__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 (45) hide show
  1. agno/agent/agent.py +5 -1
  2. agno/db/base.py +2 -0
  3. agno/db/postgres/postgres.py +5 -5
  4. agno/db/sqlite/sqlite.py +4 -4
  5. agno/knowledge/knowledge.py +83 -1853
  6. agno/knowledge/loaders/__init__.py +29 -0
  7. agno/knowledge/loaders/azure_blob.py +423 -0
  8. agno/knowledge/loaders/base.py +187 -0
  9. agno/knowledge/loaders/gcs.py +267 -0
  10. agno/knowledge/loaders/github.py +415 -0
  11. agno/knowledge/loaders/s3.py +281 -0
  12. agno/knowledge/loaders/sharepoint.py +439 -0
  13. agno/knowledge/reader/website_reader.py +2 -2
  14. agno/knowledge/remote_knowledge.py +151 -0
  15. agno/learn/stores/session_context.py +10 -2
  16. agno/models/azure/openai_chat.py +6 -11
  17. agno/models/neosantara/__init__.py +5 -0
  18. agno/models/neosantara/neosantara.py +42 -0
  19. agno/models/utils.py +5 -0
  20. agno/os/app.py +4 -1
  21. agno/os/interfaces/agui/router.py +1 -1
  22. agno/os/routers/components/components.py +2 -0
  23. agno/os/routers/knowledge/knowledge.py +0 -1
  24. agno/os/routers/registry/registry.py +340 -192
  25. agno/os/routers/workflows/router.py +7 -1
  26. agno/os/schema.py +104 -0
  27. agno/registry/registry.py +4 -0
  28. agno/session/workflow.py +1 -1
  29. agno/skills/utils.py +100 -2
  30. agno/team/team.py +6 -3
  31. agno/vectordb/lancedb/lance_db.py +22 -7
  32. agno/workflow/__init__.py +4 -0
  33. agno/workflow/cel.py +299 -0
  34. agno/workflow/condition.py +145 -2
  35. agno/workflow/loop.py +177 -46
  36. agno/workflow/parallel.py +75 -4
  37. agno/workflow/router.py +260 -44
  38. agno/workflow/step.py +14 -7
  39. agno/workflow/steps.py +43 -0
  40. agno/workflow/workflow.py +104 -46
  41. {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/METADATA +24 -36
  42. {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/RECORD +45 -34
  43. {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/WHEEL +0 -0
  44. {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/licenses/LICENSE +0 -0
  45. {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/top_level.txt +0 -0
agno/workflow/workflow.py CHANGED
@@ -106,6 +106,43 @@ STEP_TYPE_MAPPING = {
106
106
  Router: StepType.ROUTER,
107
107
  }
108
108
 
109
+
110
+ def _step_from_dict(
111
+ data: Dict[str, Any],
112
+ registry: Optional["Registry"] = None,
113
+ db: Optional["BaseDb"] = None,
114
+ links: Optional[List[Dict[str, Any]]] = None,
115
+ ) -> Union[Step, Steps, Loop, Parallel, Condition, Router]:
116
+ """
117
+ Deserialize a step from a dictionary based on its type.
118
+
119
+ Args:
120
+ data: Dictionary containing step configuration with a "type" field
121
+ registry: Optional registry for rehydrating non-serializable objects
122
+ db: Optional database for loading agents/teams in steps
123
+ links: Optional links for this step version
124
+
125
+ Returns:
126
+ The appropriate step type instance (Step, Steps, Loop, Parallel, Condition, or Router)
127
+ """
128
+ step_type = data.get("type", "Step")
129
+
130
+ if step_type == "Loop":
131
+ return Loop.from_dict(data, registry=registry, db=db, links=links)
132
+ elif step_type == "Parallel":
133
+ return Parallel.from_dict(data, registry=registry, db=db, links=links)
134
+ elif step_type == "Steps":
135
+ return Steps.from_dict(data, registry=registry, db=db, links=links)
136
+ elif step_type == "Condition":
137
+ return Condition.from_dict(data, registry=registry, db=db, links=links)
138
+ elif step_type == "Router":
139
+ return Router.from_dict(data, registry=registry, db=db, links=links)
140
+ elif step_type == "Step":
141
+ return Step.from_dict(data, registry=registry, db=db, links=links)
142
+ else:
143
+ raise ValueError(f"Unknown step type: {step_type}")
144
+
145
+
109
146
  WorkflowSteps = Union[
110
147
  Callable[
111
148
  ["Workflow", WorkflowExecutionInput],
@@ -597,7 +634,6 @@ class Workflow:
597
634
  config["telemetry"] = self.telemetry
598
635
 
599
636
  # --- Steps ---
600
- # TODO: Implement steps serialization for step types other than Step
601
637
  if self.steps and isinstance(self.steps, list):
602
638
  config["steps"] = [step.to_dict() for step in self.steps if hasattr(step, "to_dict")]
603
639
 
@@ -630,7 +666,7 @@ class Workflow:
630
666
  db_data = config["db"]
631
667
  db_id = db_data.get("id")
632
668
 
633
- # First try to get the db from the registry (preferred - reuses existing connection)
669
+ # Try to get the db from the registry
634
670
  if registry and db_id:
635
671
  registry_db = registry.get_db(db_id)
636
672
  if registry_db is not None:
@@ -655,7 +691,7 @@ class Workflow:
655
691
  # --- Handle steps reconstruction ---
656
692
  steps: Optional[WorkflowSteps] = None
657
693
  if "steps" in config and config["steps"]:
658
- steps = [Step.from_dict(step_data, db=db, links=links, registry=registry) for step_data in config["steps"]]
694
+ steps = [_step_from_dict(step_data, db=db, links=links, registry=registry) for step_data in config["steps"]]
659
695
  del config["steps"]
660
696
 
661
697
  return cls(
@@ -681,7 +717,7 @@ class Workflow:
681
717
  store_events=config.get("store_events", False),
682
718
  store_executor_outputs=config.get("store_executor_outputs", True),
683
719
  # --- Schema settings ---
684
- # input_schema=config.get("input_schema"), # TODO
720
+ input_schema=config.get("input_schema"),
685
721
  # --- Metadata ---
686
722
  metadata=config.get("metadata"),
687
723
  # --- Debug and telemetry settings ---
@@ -723,40 +759,53 @@ class Workflow:
723
759
  saved_versions: Dict[str, int] = {}
724
760
 
725
761
  # Collect all links
726
- all_links = []
727
- steps_config = []
762
+ all_links: List[Dict[str, Any]] = []
763
+
764
+ def _save_step_agents(
765
+ step: Any,
766
+ position: int,
767
+ saved_versions: Dict[str, int],
768
+ all_links: List[Dict[str, Any]],
769
+ ) -> None:
770
+ """Recursively save agents/teams in steps, including nested containers."""
771
+ if isinstance(step, Step):
772
+ # Save agent if present
773
+ if step.agent and isinstance(step.agent, Agent):
774
+ agent_version = step.agent.save(
775
+ db=db_,
776
+ stage=stage,
777
+ label=label,
778
+ notes=notes,
779
+ )
780
+ if step.agent.id is not None and agent_version is not None:
781
+ saved_versions[step.agent.id] = agent_version
782
+
783
+ # Save team if present
784
+ if step.team and isinstance(step.team, Team):
785
+ team_version = step.team.save(db=db_, stage=stage, label=label, notes=notes)
786
+ if step.team.id is not None and team_version is not None:
787
+ saved_versions[step.team.id] = team_version
788
+
789
+ # Add links with position and pinned version
790
+ for link in step.get_links(position=position):
791
+ if link["child_component_id"] in saved_versions:
792
+ link["child_version"] = saved_versions[link["child_component_id"]]
793
+ all_links.append(link)
794
+
795
+ elif isinstance(step, (Parallel, Loop, Steps, Condition)):
796
+ # Recursively process nested steps
797
+ for nested_position, nested_step in enumerate(step.steps):
798
+ _save_step_agents(nested_step, nested_position, saved_versions, all_links)
799
+
800
+ elif isinstance(step, Router):
801
+ # Router uses 'choices' instead of 'steps'
802
+ for nested_position, nested_step in enumerate(step.choices):
803
+ _save_step_agents(nested_step, nested_position, saved_versions, all_links)
728
804
 
729
805
  try:
730
806
  steps_to_save = self.steps if isinstance(self.steps, list) else []
731
807
  for position, step in enumerate(steps_to_save):
732
- # TODO: Support other Step types
733
- if isinstance(step, Step):
734
- # TODO: Allow not saving a new config if the agent/team already has a published config and no changes have been made
735
- # Save agent/team if present and capture version
736
- if step.agent and isinstance(step.agent, Agent):
737
- agent_version = step.agent.save(
738
- db=db_,
739
- stage=stage,
740
- label=label,
741
- notes=notes,
742
- )
743
- if step.agent.id is not None and agent_version is not None:
744
- saved_versions[step.agent.id] = agent_version
745
-
746
- if step.team and isinstance(step.team, Team):
747
- team_version = step.team.save(db=db_, stage=stage, label=label, notes=notes)
748
- if step.team.id is not None and team_version is not None:
749
- saved_versions[step.team.id] = team_version
750
-
751
- # Add step config
752
- steps_config.append(step.to_dict())
753
-
754
- # Add links with position and pinned version
755
- for link in step.get_links(position=position):
756
- # Pin the version if we just saved it
757
- if link["child_component_id"] in saved_versions:
758
- link["child_version"] = saved_versions[link["child_component_id"]]
759
- all_links.append(link)
808
+ _save_step_agents(step, position, saved_versions, all_links)
760
809
 
761
810
  db_.upsert_component(
762
811
  component_id=self.id,
@@ -1346,7 +1395,7 @@ class Workflow:
1346
1395
 
1347
1396
  # ALSO broadcast through websocket manager for reconnected clients
1348
1397
  # This ensures clients who reconnect after workflow started still receive events
1349
- if buffer_run_id:
1398
+ if buffer_run_id and websocket_handler:
1350
1399
  try:
1351
1400
  import asyncio
1352
1401
 
@@ -1392,6 +1441,9 @@ class Workflow:
1392
1441
  event.workflow_id = workflow_run_response.workflow_id
1393
1442
  if hasattr(event, "workflow_run_id"):
1394
1443
  event.workflow_run_id = workflow_run_response.run_id
1444
+ # Set session_id to match workflow's session_id for consistent event tracking
1445
+ if hasattr(event, "session_id") and workflow_run_response.session_id:
1446
+ event.session_id = workflow_run_response.session_id
1395
1447
  if hasattr(event, "step_id") and step_id:
1396
1448
  event.step_id = step_id
1397
1449
  if hasattr(event, "step_name") and step_name is not None:
@@ -5037,17 +5089,23 @@ def get_workflows(
5037
5089
  try:
5038
5090
  components, _ = db.list_components(component_type=ComponentType.WORKFLOW)
5039
5091
  for component in components:
5040
- config = db.get_config(component_id=component["component_id"])
5041
- if config is not None:
5042
- workflow_config = config.get("config")
5043
- if workflow_config is not None:
5044
- component_id = component["component_id"]
5045
- if "id" not in workflow_config:
5046
- workflow_config["id"] = component_id
5047
- workflow = Workflow.from_dict(workflow_config, db=db, registry=registry)
5048
- # Ensure workflow.id is set to the component_id
5049
- workflow.id = component_id
5050
- workflows.append(workflow)
5092
+ try:
5093
+ config = db.get_config(component_id=component["component_id"])
5094
+ if config is not None:
5095
+ workflow_config = config.get("config")
5096
+ if workflow_config is not None:
5097
+ component_id = component["component_id"]
5098
+ if "id" not in workflow_config:
5099
+ workflow_config["id"] = component_id
5100
+ workflow = Workflow.from_dict(workflow_config, db=db, registry=registry)
5101
+ # Ensure workflow.id is set to the component_id
5102
+ workflow.id = component_id
5103
+ workflows.append(workflow)
5104
+ except Exception as e:
5105
+ component_id = component.get("component_id", "unknown")
5106
+ log_error(f"Error loading Workflow {component_id} from database: {e}")
5107
+ # Continue loading other workflows even if this one fails
5108
+ continue
5051
5109
  return workflows
5052
5110
 
5053
5111
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.4.7
3
+ Version: 2.4.8
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
@@ -107,6 +107,8 @@ Requires-Dist: portkey-ai; extra == "portkey"
107
107
  Provides-Extra: tokenizers
108
108
  Requires-Dist: tiktoken; extra == "tokenizers"
109
109
  Requires-Dist: tokenizers; extra == "tokenizers"
110
+ Provides-Extra: cel
111
+ Requires-Dist: cel-python; extra == "cel"
110
112
  Provides-Extra: agentql
111
113
  Requires-Dist: agentql; extra == "agentql"
112
114
  Provides-Extra: apify
@@ -445,7 +447,7 @@ Dynamic: license-file
445
447
  </div>
446
448
 
447
449
  <p align="center">
448
- Build agents that learn.
450
+ Build multi-agent systems that learn.
449
451
  </p>
450
452
 
451
453
  <div align="center">
@@ -460,15 +462,16 @@ Dynamic: license-file
460
462
 
461
463
  ## What is Agno?
462
464
 
463
- **A Python SDK for building agents that learn and improve with every interaction.**
465
+ **A framework for building multi-agent systems that learn and improve with every interaction.**
464
466
 
465
467
  Most agents are stateless. They reason, respond, forget. Session history helps, but they're exactly as capable on day 1000 as they were on day 1.
466
468
 
467
- Agno agents are different. They remember users across sessions, accumulate knowledge across conversations, and learn from decisions. Insights from one user benefit everyone.
469
+ Agno agents are different. They remember users across sessions, accumulate knowledge across conversations, and learn from decisions. Insights from one user benefit everyone. The system gets smarter over time.
468
470
 
469
471
  Everything runs in your cloud. Your data never leaves your environment.
470
472
 
471
473
  ## Quick Example
474
+
472
475
  ```python
473
476
  from agno.agent import Agent
474
477
  from agno.db.sqlite import SqliteDb
@@ -485,46 +488,31 @@ One line. Your agent now remembers users, accumulates knowledge, and improves ov
485
488
 
486
489
  ## Production Stack
487
490
 
491
+ Agno provides the complete infrastructure for building multi-agent systems that learn:
492
+
488
493
  | Layer | What it does |
489
494
  |-------|--------------|
490
- | **SDK** | Build agents with learning, tools, knowledge, and guardrails |
495
+ | **Framework** | Build agents with learning, tools, knowledge, and guardrails |
491
496
  | **Runtime** | Run in production using [AgentOS](https://docs.agno.com/agent-os/introduction) |
492
497
  | **Control Plane** | Monitor and manage via the [AgentOS UI](https://os.agno.com) |
493
498
 
494
- ## Features
495
-
496
- **Learning**
497
- - User profiles that persist across sessions
498
- - User memories that accumulate over time
499
- - Learned knowledge that transfers across users
500
- - Always or agentic learning modes
499
+ ## Get Started
501
500
 
502
- **Core**
503
- - Model-agnostic: OpenAI, Anthropic, Google, local models
504
- - Type-safe I/O with `input_schema` and `output_schema`
505
- - Async-first, built for long-running tasks
506
- - Natively multimodal (text, images, audio, video, files)
501
+ 1. [Build your first agent](https://docs.agno.com/first-agent)
502
+ 2. [Build your first multi-agent system](https://docs.agno.com/first-multi-agent-system)
503
+ 3. [Deploy to production](https://docs.agno.com/production/overview)
507
504
 
508
- **Knowledge**
509
- - Agentic RAG with 20+ vector stores, hybrid search, reranking
510
- - Persistent storage for session history and state
505
+ More: [Docs](https://docs.agno.com) · [Cookbook](https://github.com/agno-agi/agno/tree/main/cookbook)
511
506
 
512
- **Orchestration**
513
- - Human-in-the-loop (confirmations, approvals, overrides)
514
- - Guardrails for validation and security
515
- - First-class MCP and A2A support
516
- - 100+ built-in toolkits
517
-
518
- **Production**
519
- - Ready-to-use FastAPI runtime
520
- - Integrated control plane UI
521
- - Evals for accuracy, performance, latency
522
-
523
- ## Getting Started
507
+ ## Features
524
508
 
525
- 1. Follow the [quickstart](https://docs.agno.com/get-started/quickstart)
526
- 2. Browse the [cookbook](https://github.com/agno-agi/agno/tree/main/cookbook)
527
- 3. Read the [docs](https://docs.agno.com)
509
+ | Category | What you get |
510
+ |----------|--------------|
511
+ | **Learning** | User profiles that persist across sessions. User memories that accumulate over time. Learned knowledge that transfers across users. Always or agentic learning modes. |
512
+ | **Core** | Model-agnostic: OpenAI, Anthropic, Google, local models. Type-safe I/O with `input_schema` and `output_schema`. Async-first, built for long-running tasks. Natively multimodal (text, images, audio, video, files). |
513
+ | **Knowledge** | Agentic RAG with 20+ vector stores, hybrid search, reranking. Persistent storage for session history and state. |
514
+ | **Orchestration** | Human-in-the-loop (confirmations, approvals, overrides). Guardrails for validation and security. First-class MCP and A2A support. 100+ built-in toolkits. |
515
+ | **Production** | Ready-to-use FastAPI runtime. Integrated control plane UI. Evals for accuracy, performance, latency. |
528
516
 
529
517
  ## IDE Integration
530
518
 
@@ -536,7 +524,7 @@ Also works with VSCode, Windsurf, and similar tools.
536
524
 
537
525
  ## Contributing
538
526
 
539
- See the [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md).
527
+ See the [contributing guide](https://github.com/agno-agi/agno/blob/main/CONTRIBUTING.md).
540
528
 
541
529
  ## Telemetry
542
530
 
@@ -6,7 +6,7 @@ agno/media.py,sha256=PisfrNwkx2yVOW8p6LXlV237jI06Y6kGjd7wUMk5170,17121
6
6
  agno/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  agno/table.py,sha256=9hHFnInNsrj0ZKtWjGDP5c6kbmNdtQvDDYT2j2CZJ6o,198
8
8
  agno/agent/__init__.py,sha256=YwN1bvBECSRRQ9mOCZ40eCO4WN5xEPEh0jxWyc83vX4,1190
9
- agno/agent/agent.py,sha256=mu6uYbs5G31HFfMEM5qmmD6r7ic5OTRKsiOVgjnYLEg,563740
9
+ agno/agent/agent.py,sha256=_0Bk6NxUkWW6_4Q0CBw5ne2VPRlduZYsSOzl9CDIzhs,563890
10
10
  agno/agent/remote.py,sha256=3PvPEXLH4QAGVsPnoD0qKDv05swRZpB0gw9bQDCJiLw,19667
11
11
  agno/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  agno/api/agent.py,sha256=fKlQ62E_C9Rjd7Zus3Gs3R1RG-IhzFV-ICpkb6SLqYc,932
@@ -41,7 +41,7 @@ agno/compression/manager.py,sha256=batKFOY0z1KLpgM__DODVMiqI-Sa1ixN4GGWfiCn26w,1
41
41
  agno/culture/__init__.py,sha256=nVScbcUeBmkj8l-rJWGOVGytwp5xB6IfUEL_h6atzQw,118
42
42
  agno/culture/manager.py,sha256=sh48GgfkgwQth2vB5ulgrbv2HGAfVidABrwAYEzWGBs,39833
43
43
  agno/db/__init__.py,sha256=bfd_tpKsIKCjZosnFqID26VoWqy88v8gzkf9kLHToY4,625
44
- agno/db/base.py,sha256=MwkIVjTLVsxhq7d9hB5YIAba-qLMk0KAnDDj3ovAa1I,51433
44
+ agno/db/base.py,sha256=6r5Bzn59kLxL-6y-HXIcTHzAhJFZDai3UAse2iGaD-k,51535
45
45
  agno/db/utils.py,sha256=vkzNHmkkFD5fRFyMs0RAYatgjv_3oMoQ9X0Ri6qygbQ,6814
46
46
  agno/db/async_postgres/__init__.py,sha256=ja_thcYP3bP0DD3da6iUVDR_w2-S6B3M-UxBlkRfAvY,76
47
47
  agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
@@ -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=adju222IPFyY_vd5mRc876aP2s08jSpQaebOGDoQWnc,128247
82
- agno/db/postgres/postgres.py,sha256=DwW0OJAIJwGPfId6Kf-U6yPBCB08YB3xkiNO2nQuyYs,185487
82
+ agno/db/postgres/postgres.py,sha256=TPYFpDvLh4wInoTN1mcPpZ7_2fdS7KGMzlP9Tc8LC_8,185515
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=BzvBibnsK654K48gx-aWzV7FhmYNS324JBUnoldILTk,136969
101
101
  agno/db/sqlite/schemas.py,sha256=uOhtTee4bdmDyl3xsGW8cnVDKB-j0-fZ0vVLikzMY90,12239
102
- agno/db/sqlite/sqlite.py,sha256=0GQR3FS9UlDxFQs1VF_t5OXhw7FBccfL6CO8JZE7CKY,176593
102
+ agno/db/sqlite/sqlite.py,sha256=pwBeJB7ACreSkfJSkQC_9PYRGbIMr7Rz3_0r5y2PLEU,176615
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
@@ -127,8 +127,9 @@ agno/integrations/discord/client.py,sha256=HbXQHHOKKSVFZs0sIJlzoW9bLigbBgOE2kP0I
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=Gm37EALvmgTm-PeIqPpWYq-vGkTqtkgOuNHCJvXyqwo,221034
130
+ agno/knowledge/knowledge.py,sha256=UESS4nZjr5n2CFs0BZ4gtCjeL5zLDaT-5T77nHcB6As,140239
131
131
  agno/knowledge/protocol.py,sha256=_hSe0czvTOmu9_NtzsaOxDCnTMYklObxYTphQB3pZ9M,4248
132
+ agno/knowledge/remote_knowledge.py,sha256=0ZKpb75JlV-TNSh-GyLuJ4b_mVlHwMkgH0Y4-cgZyTw,5924
132
133
  agno/knowledge/types.py,sha256=4NnkL_h2W-7GQnHW-yIqMNPUCWLzo5qBXF99gfsMe08,773
133
134
  agno/knowledge/utils.py,sha256=GJHL1vAOrD6KFEpOiN4Gsgz70fRG0E-jooKIBdfq4zI,9853
134
135
  agno/knowledge/chunking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -162,6 +163,13 @@ agno/knowledge/embedder/sentence_transformer.py,sha256=_d4XgV07bj1hkKnuzZGvP--v_
162
163
  agno/knowledge/embedder/together.py,sha256=Pt524Lh6YRDKfD8rfmLu0Qlw4dDh4vLz7KEMIvIULBk,387
163
164
  agno/knowledge/embedder/vllm.py,sha256=whtZs4OGzE9aXeK-L1UmwwnpgAgxFlxAfiHREroj8yA,10952
164
165
  agno/knowledge/embedder/voyageai.py,sha256=E6RjQRaa5d2BHmkW09QG68ncrgBV2Vqq25ZR8vegEFs,6602
166
+ agno/knowledge/loaders/__init__.py,sha256=DxpMfmFXuUEZqFzboiV5ay7p4y64wGoAQVXU9nM2pos,923
167
+ agno/knowledge/loaders/azure_blob.py,sha256=BihO5rIJ4b4tFmdRy9qyGfPkkMt49-IzI9Ts9TUh8HE,18671
168
+ agno/knowledge/loaders/base.py,sha256=87Fp1kLq9YbvdiWuV-u__3VcTmQd7ffU5Uo2Drg1eRo,6131
169
+ agno/knowledge/loaders/gcs.py,sha256=vJf0GM-5_xIEfjj3N6UM-1m1SIHd0q87tuFhWQeNoY0,10679
170
+ agno/knowledge/loaders/github.py,sha256=ssK0r6DYkNQkljMyIaBL6Laa7kNS13poH8dBuPj4nRs,18102
171
+ agno/knowledge/loaders/s3.py,sha256=DK3qx4eCiUPh1ewO1AzWsm_ftG6hQ3yvjZCiZ1SBOgc,11486
172
+ agno/knowledge/loaders/sharepoint.py,sha256=XQxro960RI8O-RjlTY7g4egogtpVzwm4NZOaq21qLwk,19305
165
173
  agno/knowledge/reader/__init__.py,sha256=edjnCwyDjM9Q5JPMi4K9mll8a3CdV52iagUKAgGiaas,159
166
174
  agno/knowledge/reader/arxiv_reader.py,sha256=su1A9VmQBtt5q_5rbsmFh_l3DPnXKrASBp3O5lpU1R4,2780
167
175
  agno/knowledge/reader/base.py,sha256=jntGjnQ8Y05cz3eqvSt5cgicotPqX2hl_2grrIShlFI,3885
@@ -179,7 +187,7 @@ agno/knowledge/reader/s3_reader.py,sha256=F1glvjOpArXPSN8uCdjtnEe-S8HTJ-w7Av34bs
179
187
  agno/knowledge/reader/tavily_reader.py,sha256=LpKdMb9Z6UpDyNq137voesolGE8uCGjqf398JsQqkgY,7228
180
188
  agno/knowledge/reader/text_reader.py,sha256=RNiH-vkAyxR7bTsmmxDwZxmFWnOLYgStvN2XFonoA7o,4607
181
189
  agno/knowledge/reader/web_search_reader.py,sha256=bhFJqqlaRxJSQYE1oMlUiImW4DriOH1GwS5MAkBXyHA,12118
182
- agno/knowledge/reader/website_reader.py,sha256=B64_xoH3Mlfweyj96msTiIW42-aN_OOAfhNkZyWIzmU,19431
190
+ agno/knowledge/reader/website_reader.py,sha256=lDh8IYXPHfNBnLw2FaC3aWtUZAZphaOuq2CSGLHhC1E,19430
183
191
  agno/knowledge/reader/wikipedia_reader.py,sha256=C5aMlTwRHRW7FFh2c-JKZLlX5l0PzW6khq5Tu37FwbU,3137
184
192
  agno/knowledge/reader/youtube_reader.py,sha256=k12hrCE2ib9Pp9deE4oktRxHEKQddNbdOjOzTkqLA1I,3031
185
193
  agno/knowledge/reader/utils/__init__.py,sha256=kGCRfjiPPJJnFE_1w190KJbSktPAd7fhONpguwLOprY,389
@@ -204,7 +212,7 @@ agno/learn/stores/decision_log.py,sha256=gzGhHKe8YZ3I8C_xuTJzAobUmVQRhrFZSZ5W9py
204
212
  agno/learn/stores/entity_memory.py,sha256=6liU6aoR7C2tI91fgU2BUChtTYlCLM1dH4Ad6Iu7dOY,117078
205
213
  agno/learn/stores/learned_knowledge.py,sha256=raSP6T4zEEYRzEtepA4Vi042yqZpWbM7mIcPSFZiFh8,57001
206
214
  agno/learn/stores/protocol.py,sha256=SaB76BIXCQMTcEHQDNxUxPnOE2Jx9MMPj3tNsk9_VJk,3324
207
- agno/learn/stores/session_context.py,sha256=OQFk4OfYmHSNsytTfmm_4DJNTptNoDHWfqGnBHh06zU,48128
215
+ agno/learn/stores/session_context.py,sha256=j3uKhDZKE_U8iILy765adTtgfe1DS8dEBWcEt8YMMpw,48562
208
216
  agno/learn/stores/user_memory.py,sha256=le3Vi1hsokopWeMkme9t-ju6GCP1w6z16iJ6Mi6hKdQ,55648
209
217
  agno/learn/stores/user_profile.py,sha256=p-TDwaD6HDbFdELysQaLO_eo1UOARgENVAjdjv6TAdw,40763
210
218
  agno/memory/__init__.py,sha256=hB7aQmxTHTMX4prgoLabas1Ic_LvT777oR_ECIXyAiM,419
@@ -219,7 +227,7 @@ agno/models/defaults.py,sha256=1_fe4-ZbNriE8BgqxVRVi4KGzEYxYKYsz4hn6CZNEEM,40
219
227
  agno/models/message.py,sha256=5bZOFdZuhsQw06nNppvFJq-JGI4lqQt4sVhdjfEFBZM,19976
220
228
  agno/models/metrics.py,sha256=bQJ5DMoFcrb2EyA2VUm4u9HVGbgTKO5F1o2A_t_7hqI,4913
221
229
  agno/models/response.py,sha256=xZQ-2L5tciX70hTbniSp2XLt9OTBuasW4_lsWMGGfoM,7976
222
- agno/models/utils.py,sha256=FKzRbNm_hO_gdICBO-x4KWL6OkWIeipn07PeerUDR1M,7397
230
+ agno/models/utils.py,sha256=xcaT504taSQdcsFGVXPFrDpcPuXNrtL5Tq7atxlwjaA,7533
223
231
  agno/models/aimlapi/__init__.py,sha256=XQcFRvt4qJ8ol9nCC0XKEkVEDivdNf3nZNoJZMZ5m8M,78
224
232
  agno/models/aimlapi/aimlapi.py,sha256=ELPv8RuEc6qUq4JxWEJVRITsK71rzUxw6_cP3Zd8Vz0,2179
225
233
  agno/models/anthropic/__init__.py,sha256=nbReX3p17JCwfrMDR9hR7-OaEFZm80I7dng93dl-Fhw,77
@@ -229,7 +237,7 @@ agno/models/aws/bedrock.py,sha256=qK95OEoJBwkMj3NFB-o9F2JTp1Z_ygp6dBupxFI24fM,32
229
237
  agno/models/aws/claude.py,sha256=d_vwWtZZw3KHOOTLrPV_C7IWozIMxNafAHmxesyg1mk,9097
230
238
  agno/models/azure/__init__.py,sha256=EoFdJHjayvmv_VOmaW9cJguwA1K5OFS_nFeazyn0B2w,605
231
239
  agno/models/azure/ai_foundry.py,sha256=VMIci3geZ5KGq-ua7k0eHH33gBFOWbJWamEsxtmiaqg,19915
232
- agno/models/azure/openai_chat.py,sha256=4vya7TxRVD7TzZX6L0NAZeF_UPp2tHm_kOaIdytz6lw,6063
240
+ agno/models/azure/openai_chat.py,sha256=9qBIHzs7EjZ2f6hy9nkgyw2hsV9m4Ut4YlST5T8GfrQ,5874
233
241
  agno/models/cerebras/__init__.py,sha256=F3vE0lmMu-qDQ_Y7hg_czJitLsvNu4SfPv174wg1cq8,376
234
242
  agno/models/cerebras/cerebras.py,sha256=Q2AgXTXRNDh9CryjbTqNxpCg2USUzErDIRTU5tv0tEQ,23122
235
243
  agno/models/cerebras/cerebras_openai.py,sha256=ut4_xz6gKWKA-kJZCWjpk0RuCrvLe0YDrzofxh9E7_U,4907
@@ -276,6 +284,8 @@ agno/models/n1n/__init__.py,sha256=CymyKzTZWr-klifwaxzGTMDSVaPxBVtKOHQ-4VaPiWg,5
276
284
  agno/models/n1n/n1n.py,sha256=UW7MPHNAU0sfMTaHh7HIYcWVSuc_-I16KrrlsqF1I2U,1977
277
285
  agno/models/nebius/__init__.py,sha256=gW2yvxIfV2gxxOnBtTP8MCpI9AvMbIE6VTw-gY01Uvg,67
278
286
  agno/models/nebius/nebius.py,sha256=T1slyayVfxSXNVVpylqogdWk8fNzvCJhzdWfhRCRdw8,1893
287
+ agno/models/neosantara/__init__.py,sha256=PMsFKCbOT09Bd3TNiowRHZMojWEkzvaM7kQbl8qAqrA,90
288
+ agno/models/neosantara/neosantara.py,sha256=tzdKMwj0VVoHFSfMJZGaAJKqKpfIS4wA6G3GR46tF7M,1601
279
289
  agno/models/nexus/__init__.py,sha256=q9pwjZ2KXpG1B3Cy8ujrj3_s0a_LI5SaekXJL6mh4gE,63
280
290
  agno/models/nexus/nexus.py,sha256=rJcBQXR1aqUiLWMPBRuHIEh87wVrsqXup1hr_smanBQ,635
281
291
  agno/models/nvidia/__init__.py,sha256=O0g3_0_ciOz0AH4Y4CAL7YRfhdDPAvhDzNjJmgWKT78,74
@@ -312,13 +322,13 @@ agno/models/vllm/vllm.py,sha256=qaWgYcmegJZL52ZjmuIoryBpZ9LpOvYHFY-AYxVirA4,2806
312
322
  agno/models/xai/__init__.py,sha256=ukcCxnCHxTtkJNA2bAMTX4MhCv1wJcbiq8ZIfYczIxs,55
313
323
  agno/models/xai/xai.py,sha256=i7QoRiVdmoQ1E8Zw_e60qQgF85geZXWRPtEKioIInSU,4796
314
324
  agno/os/__init__.py,sha256=h8oQu7vhD5RZf09jkyM_Kt1Kdq_d5kFB9gJju8QPwcY,55
315
- agno/os/app.py,sha256=q6SyGYTL9aNZmgnN46Zn9udQx4zOYSV7t5sbElKetAI,47623
325
+ agno/os/app.py,sha256=crRPtU3kuvVvYyhDq4etzmJnViv0mh1EJ7ElYf5rB0A,47837
316
326
  agno/os/auth.py,sha256=3-0FUvj5o5e0qOl1ixEJ8NLdchpr8AroKaK_4pojp7w,11291
317
327
  agno/os/config.py,sha256=z0wNd576_qsQGsQWsMRIZzjknDVEPlKWF_pHE6VBUyY,3538
318
328
  agno/os/managers.py,sha256=j7Y07yEsW03iKEy1itb3sq3PXcJS3ipJbK4rTqk6_Ow,13086
319
329
  agno/os/mcp.py,sha256=TNkq9y20RBrCFx3iIk1MPrct6gCTYV0KMPS_1EwNghs,31393
320
330
  agno/os/router.py,sha256=WiWtf7FHXR8_IzT3Bbi2lX4j4DAhBLL06zbDhVR0Iog,12401
321
- agno/os/schema.py,sha256=HqeB0hPcpZlrlzZbGNQfPwnT6PZUJbSdRlTTjctXDHQ,33472
331
+ agno/os/schema.py,sha256=qYnKOUCQDfQpXmdRRerkj3Z_XaXqw3YBOociuI0KLt0,38045
322
332
  agno/os/scopes.py,sha256=gH3Obo618gHKt5h-N1OkWqB4UPl2LZygd7GW7pKzdAc,15696
323
333
  agno/os/settings.py,sha256=gS9pN1w21wsa5XqDkK-RfQmroAaqoX4KZBfRuhUevkM,1556
324
334
  agno/os/utils.py,sha256=x60JkKFgteAFoRarBJTaKiaQd4584EjVLqHfCryWUtw,39195
@@ -330,7 +340,7 @@ agno/os/interfaces/a2a/router.py,sha256=Upd7DZz9qk5cnaFLqfQ-05HSBdwL4ZPdfRfn63RM
330
340
  agno/os/interfaces/a2a/utils.py,sha256=coYLdYehsX_ffa4iycc0PdYLSiqt9lAxOLJTlaSriVo,40304
331
341
  agno/os/interfaces/agui/__init__.py,sha256=1zrGICk4roXUINwSFZfqH6sBsbHmD5KjGYVJMGg4fKQ,66
332
342
  agno/os/interfaces/agui/agui.py,sha256=KjQ3qrTCtFWDcHk3ViPguV6FvSuYKrAwENbDzUCcscM,1543
333
- agno/os/interfaces/agui/router.py,sha256=HmYWb2PcBNeWpq6ft-dfdLlSyEHXLaM9CHaVBS4wU_8,5645
343
+ agno/os/interfaces/agui/router.py,sha256=bBXqAzlaDo33ZXiV36CQVlD9lfIoA5hD77ESiQ78wCI,5654
334
344
  agno/os/interfaces/agui/utils.py,sha256=veRYnk8EVSuF2owJjNFUhQRsyqbxIlFQnAqjB0KY0mU,23645
335
345
  agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
336
346
  agno/os/interfaces/slack/router.py,sha256=PqlObVE396in76wN5bef8YxeFWYANwlcrvw0Fau3vGY,6402
@@ -351,13 +361,13 @@ agno/os/routers/agents/__init__.py,sha256=nr1H0Mp7NlWPnvu0ccaHVSPHz-lXg43TRMApkU
351
361
  agno/os/routers/agents/router.py,sha256=zfj9JuruHiucl-3jqOTp0sWkHydI7rHNCD20q3Hej-c,26615
352
362
  agno/os/routers/agents/schema.py,sha256=4jVKsM-KVSQEwN4EIzUT3fzs7OF7QQ6sdS8f40_IGPk,12940
353
363
  agno/os/routers/components/__init__.py,sha256=yzvMCbvRYU2pMRWNNgDH9hmVq4jhMqsUG2aIeEyNcpE,109
354
- agno/os/routers/components/components.py,sha256=DlkIli9GxrcKEAUyYlPSHjyEH8v1eopRGtx0943LEgY,18733
364
+ agno/os/routers/components/components.py,sha256=E6tI3-vduXhWIMMRaK1BjGhOZDoJvcFJoy39iFdGTsQ,18854
355
365
  agno/os/routers/evals/__init__.py,sha256=3s0M-Ftg5A3rFyRfTATs-0aNA6wcbj_5tCvtwH9gORQ,87
356
366
  agno/os/routers/evals/evals.py,sha256=9DErwITEV6O1BAr28asB29Yvgy8C5wtzQyz-ys-yJzw,23478
357
367
  agno/os/routers/evals/schemas.py,sha256=ouz-tsFNsPMnYE4Y7Cti_ZbBHsL6XiXFQVXz97BYe_k,7767
358
368
  agno/os/routers/evals/utils.py,sha256=MjOPY0xNdJZY04_4YQxsv3FPCsKTMDix8jyKDWwn6kc,8367
359
369
  agno/os/routers/knowledge/__init__.py,sha256=ZSqMQ8X7C_oYn8xt7NaYlriarWUpHgaWDyHXOWooMaU,105
360
- agno/os/routers/knowledge/knowledge.py,sha256=Ik753YKADNo3RjxCb79uR12g9Rxi_Qkgr2mqW5oIjeU,57177
370
+ agno/os/routers/knowledge/knowledge.py,sha256=gAhaxATlW2g93wubA9u4jktOSkZ0-EcO0sQXHr-qR_k,57087
361
371
  agno/os/routers/knowledge/schemas.py,sha256=Db_K8OVXCfjmrWucDzvioIHqGkKPeFGEroRrN7sON1Y,9523
362
372
  agno/os/routers/memory/__init__.py,sha256=9hrYFc1dkbsLBqKfqyfioQeLX9TTbLrJx6lWDKNNWbc,93
363
373
  agno/os/routers/memory/memory.py,sha256=SAXNlJTsQ-orSQymlQ-XVgN6RLlui3W9tB0NVSOWLrA,32854
@@ -366,7 +376,7 @@ agno/os/routers/metrics/__init__.py,sha256=Uw6wWEikLpF5hHxBkHtFyaTuz7OUerGYWk0JW
366
376
  agno/os/routers/metrics/metrics.py,sha256=HmABUctqrgaQ1zF3vVQp8AH8EvAd1ntLoJ-2BR9FqIw,9488
367
377
  agno/os/routers/metrics/schemas.py,sha256=dZGVMQtKn5yykNsi65iV9X8tZXKGCPZymZhE46fF8Tw,2875
368
378
  agno/os/routers/registry/__init__.py,sha256=85ZU3JL7qWRp-bwHFzw-SmcRzkUrHq__Q1Dwt2Fk6LA,101
369
- agno/os/routers/registry/registry.py,sha256=QIPNHTybINo3ztxugBfO0fZCKgIOXSsWzbBNFrbz4uA,14502
379
+ agno/os/routers/registry/registry.py,sha256=dlXEs0JsxNEvsfqcw_J_JTn171eQtZ3NMggQyZWwPns,22664
370
380
  agno/os/routers/session/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
371
381
  agno/os/routers/session/session.py,sha256=oDAwi6iZTsqkDwt0MehCCUox5IC838CG7TFdgePHQ4c,57764
372
382
  agno/os/routers/teams/__init__.py,sha256=j2aPA09mwwn_vOG8p2uX0sDR-qNbLLRlPlprqM789NY,88
@@ -376,7 +386,7 @@ agno/os/routers/traces/__init__.py,sha256=v-QMRjlrw1iLkh2UawukKWfZ2R66L-OQmAGR-k
376
386
  agno/os/routers/traces/schemas.py,sha256=_O7tfF3aAPR-R1Q9noakWxjbI20UxkemVh7P2Dkw71I,20034
377
387
  agno/os/routers/traces/traces.py,sha256=63SZ_oMeHsnxmg6khZ5-FPr2PcHCu1m9Sq48kh3n-6A,24413
378
388
  agno/os/routers/workflows/__init__.py,sha256=1VnCzNTwxT9Z9EHskfqtrl1zhXGPPKuR4TktYdKd1RI,146
379
- agno/os/routers/workflows/router.py,sha256=aCHS8YuzdVubyuh0qiz36j3a2RpPxvNDMpjixT8OFSw,32194
389
+ agno/os/routers/workflows/router.py,sha256=YqZwQGU5g0t3bXi98BubfRa2QfaNM3iK0-sq3K0HVZE,32558
380
390
  agno/os/routers/workflows/schema.py,sha256=lDTblUnW60cc96opo2OY1Yc8wwtduvLZGax3v0X-5Ac,5749
381
391
  agno/reasoning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
382
392
  agno/reasoning/anthropic.py,sha256=qv1cAUCN7DX7Ka4VKyXkgrnTGBZl0Om0FFaRghJ8gSo,6310
@@ -392,7 +402,7 @@ agno/reasoning/openai.py,sha256=BrZVv0ciZgzoq71h0Ra7mg1czeMRhzDGUMtyPQHgeuQ,8140
392
402
  agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
393
403
  agno/reasoning/vertexai.py,sha256=LJeS9VFYUF_16lqPCdTM5xBYlk9KcXY72WkvQi6ynWM,6150
394
404
  agno/registry/__init__.py,sha256=nsqlkNEFS2SvZkPWITJuRJ8kRSa6hAloUq8jFX8u4JA,68
395
- agno/registry/registry.py,sha256=fMNOhDBKqhXuZyDqSu6jeaZu4JJ5JT4vaEUBY_KA8OQ,2432
405
+ agno/registry/registry.py,sha256=l8mOT3VkmIpmsmYyRoA7_9u-KTrHNAOm9F84QhZKDIs,2631
396
406
  agno/remote/__init__.py,sha256=zgDS3cO_6VavICojsmG8opJ49wLwydftGE6i6_yPDTo,66
397
407
  agno/remote/base.py,sha256=D2TDs7rmlbxgbLEArga7jq9IgdKSzhs_jzoUO43WDQo,23358
398
408
  agno/run/__init__.py,sha256=GZwloCe48rEAjkb_xOJ7piOjICmHawiR1d4SqBtUd-k,222
@@ -411,19 +421,19 @@ agno/session/__init__.py,sha256=p6eqzWcLSHiMex2yZvkwv2yrFUNdGs21TGMS49xrEC4,376
411
421
  agno/session/agent.py,sha256=8vVtwwUC5moGWdRcG99Ik6Ay7gbFRrPPnT1ncOUFQIg,10365
412
422
  agno/session/summary.py,sha256=9JnDyQyggckd3zx6L8Q5f-lglZvrFQxvPjGU8gLCgR4,10292
413
423
  agno/session/team.py,sha256=J7QIy8oCi2_eWs0ToDs7VHHfeFQI34cF4i1Yx7Tbv_M,13388
414
- agno/session/workflow.py,sha256=nPHnh1N0SJby5JRjysCUI-kTDCelQMFfqosEnnLzPIg,19690
424
+ agno/session/workflow.py,sha256=9aYmd4g-Cb5jrGlfW6CWeGlcRRJ3TSOyoruJOxoLbJ8,19687
415
425
  agno/skills/__init__.py,sha256=nGwBH_8uqu6Dmj4lojjfsQSH7A-LjqvCEzjUcJs0R3U,502
416
426
  agno/skills/agent_skills.py,sha256=8MlFblQTeYin7ioQ2FKBM9l1DZCG_O5c73OaA0Uo14g,13647
417
427
  agno/skills/errors.py,sha256=jltbTsKSl-_MESUVtIO9XZWQOn34KCNYPIW4XnsFWKs,772
418
428
  agno/skills/skill.py,sha256=-MTxSJk0w5DITejVExtwUaBV_eJXdMIZ_rxYXSl5Ij8,2534
419
- agno/skills/utils.py,sha256=IB1qvualoNUkwvA_-fhxcCSUSJa70Cftup6iIKGLqqk,2873
429
+ agno/skills/utils.py,sha256=ps_VmJTOrWC0dzRF8D2WOT7CnUX1IRbuVwMFnt2KhUs,5981
420
430
  agno/skills/validator.py,sha256=_g0UEO3e8AEIUqvg_GCTMzmOOIYU5XKYxgyP0YGKTe4,8082
421
431
  agno/skills/loaders/__init__.py,sha256=1Lb6T2BkyQECIKIk-n5F6Unxm7CT1PEan_iYrTMtmrU,141
422
432
  agno/skills/loaders/base.py,sha256=Syt6lIOe-m_Kz68ndwuVed3wZFAPvYDDnJkhypazYJ8,743
423
433
  agno/skills/loaders/local.py,sha256=7budE7d-JG86XyqnRwo495yiYWDjj16yDV67aiSacOQ,7478
424
434
  agno/team/__init__.py,sha256=Ff5VMcZnkimttdCcRFEL852JgInlWCkpdlgyfhXfIo8,971
425
435
  agno/team/remote.py,sha256=BgUEQsTFA4tehDas1YO7lwQCj3cLJrxfoSFVOYm_1po,16979
426
- agno/team/team.py,sha256=rIgZH9J0CRPEiInYQkS4xTSNsFZIkXMC1NvMBEirJv0,477194
436
+ agno/team/team.py,sha256=STW-Ju0wHGz7sXL-HWS2FtAnOF6GiNfhqR4q_5bidr8,477323
427
437
  agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
428
438
  agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
429
439
  agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
@@ -634,7 +644,7 @@ agno/vectordb/clickhouse/index.py,sha256=_YW-8AuEYy5kzOHi0zIzjngpQPgJOBdSrn9BfEL
634
644
  agno/vectordb/couchbase/__init__.py,sha256=dKZkcQLFN4r2_NIdXby4inzAAn4BDMlb9T2BW_i0_gQ,93
635
645
  agno/vectordb/couchbase/couchbase.py,sha256=SDyNQGq_wD5mkUIQGkYtR7AZCUxf7fIw50YmI0N1T5U,65636
636
646
  agno/vectordb/lancedb/__init__.py,sha256=tb9qvinKyWMTLjJYMwW_lhYHFvrfWTfHODtBfMj-NLE,111
637
- agno/vectordb/lancedb/lance_db.py,sha256=tbvXsEVcIsOjL6Suh9HUDcIvbWc8WNXQSX8v1n57pmA,41654
647
+ agno/vectordb/lancedb/lance_db.py,sha256=xk7Iq9xzutuzTwdF9-zasLkWuFbvJpmD57sMYmGW7sc,42468
638
648
  agno/vectordb/langchaindb/__init__.py,sha256=BxGs6tcEKTiydbVJL3P5djlnafS5Bbgql3u1k6vhW2w,108
639
649
  agno/vectordb/langchaindb/langchaindb.py,sha256=AS-Jrh7gXKYkSHFiXKiD0kwL-FUFz10VbYksm8UEBAU,6391
640
650
  agno/vectordb/lightrag/__init__.py,sha256=fgQpA8pZW-jEHI91SZ_xgmROmv14oKdwCQZ8LpyipaE,84
@@ -664,19 +674,20 @@ agno/vectordb/upstashdb/upstashdb.py,sha256=AAalti8wCNGikjTE_mDLVQmyuPiNVrY_KFsH
664
674
  agno/vectordb/weaviate/__init__.py,sha256=CF56_hm_DJq2JOYyzKwyrnGaSJoAFWHDvqvx5Z2SSI0,212
665
675
  agno/vectordb/weaviate/index.py,sha256=y4XYPRZFksMfrrF85B4hn5AtmXM4SH--4CyLo27EHgM,253
666
676
  agno/vectordb/weaviate/weaviate.py,sha256=B5mP2uGIbgMA1uP_JGWpjAJ7IUGm4ZHpVke_lQY0it4,40639
667
- agno/workflow/__init__.py,sha256=4aTXmTeOFofdNm-LgvjlN0y78vmsCpQDwYvke-f34E4,761
677
+ agno/workflow/__init__.py,sha256=xkd7MDog05bqKJHl-pbRexrGjZuCzYi5Mu_eGlTrjt0,902
668
678
  agno/workflow/agent.py,sha256=PSt7X8BOgO9Rmh1YnT3I9HBq360IjdXfaKNzffqqiRw,12173
669
- agno/workflow/condition.py,sha256=Wur-Q6r5Vl4KkthaoBpPn06Duan5Zk49aJIsJLiLo-g,37410
670
- agno/workflow/loop.py,sha256=9yX_JY3b14I5Rem4QtxUIj1hF1gFC-ICshv5kmnPIf0,34048
671
- agno/workflow/parallel.py,sha256=PYdnWYimIBvHqzgQ13EpvITnmjCpogDOAaPqIrDmtTs,37057
679
+ agno/workflow/cel.py,sha256=ye_t6HN11isEX9aSNgd88tN1uuj9R7IGPI3RueLmoOY,10066
680
+ agno/workflow/condition.py,sha256=1C5wj_pg5HBI64eQrUCuly80LUjDSCykj17mFGtKIlA,43692
681
+ agno/workflow/loop.py,sha256=FbxvBA_spgnkwXq3cqWZEU9eoSVrKrmDnCJ-YTZvpSw,39547
682
+ agno/workflow/parallel.py,sha256=tEHncu9gQBLKWnNNzIHMiiNi8iGSmPJf3cd3CEj7uOs,40008
672
683
  agno/workflow/remote.py,sha256=-turwcZ0Nm0rsltJAFfG6IzyhTujJZs9lPoV-W2anUs,14144
673
- agno/workflow/router.py,sha256=6rwsdOXNQX2OKcm_p2nOvqyWUnnVdiwRCZNnYwkQ7N8,31320
674
- agno/workflow/step.py,sha256=AgSugOOoWidfZGFtR5PMpgWSBpIeUQB45vmaUDnV7E8,77919
675
- agno/workflow/steps.py,sha256=p1RdyTZIKDYOPdxU7FbsX_vySWehPWaobge76Q_UDac,26462
684
+ agno/workflow/router.py,sha256=XDgsiUoiU9JGHjpsRFhexgWiRs_Y5nPwIegoiHmUR9M,40927
685
+ agno/workflow/step.py,sha256=9hQzoIVUmHNZA1PCKoB-m9e5-dAUxQokrwux2ii9g0k,78271
686
+ agno/workflow/steps.py,sha256=GfuxfvCoN7B16BtHPo7zYgB-i8_9DYnYr8XIjiWNXkY,28260
676
687
  agno/workflow/types.py,sha256=t4304WCKB19QFdV3ixXZICcU8wtBza4EBCIz5Ve6MSQ,18035
677
- agno/workflow/workflow.py,sha256=S4Iwx3LtpeE_XZ61slYvnM90BdnGhW6Gfax_BKEUG68,218609
678
- agno-2.4.7.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
679
- agno-2.4.7.dist-info/METADATA,sha256=7c2VNjm7zuh4jnQzTVP3MBRUKGvUlDc7I7VprKOe_XQ,21116
680
- agno-2.4.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
681
- agno-2.4.7.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
682
- agno-2.4.7.dist-info/RECORD,,
688
+ agno/workflow/workflow.py,sha256=98v9TDNeep0GnHb3mOfaluXplC0lWZEajJ3gpZpyXaw,221055
689
+ agno-2.4.8.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
690
+ agno-2.4.8.dist-info/METADATA,sha256=dzuJgPy_zeAexRGHfnQmjdQvvFWHlNhDP_VgdNnWKbg,21526
691
+ agno-2.4.8.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
692
+ agno-2.4.8.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
693
+ agno-2.4.8.dist-info/RECORD,,
File without changes