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
@@ -0,0 +1,42 @@
1
+ from dataclasses import dataclass
2
+ from os import getenv
3
+ from typing import Any, Dict, Optional
4
+
5
+ from agno.exceptions import ModelAuthenticationError
6
+ from agno.models.openai.like import OpenAILike
7
+
8
+
9
+ @dataclass
10
+ class Neosantara(OpenAILike):
11
+ """
12
+ A class for interacting with Neosantara API.
13
+
14
+ Attributes:
15
+ id (str): The id of the Neosantara model to use. Default is "grok-4.1-fast-non-reasoning".
16
+ name (str): The name of this chat model instance. Default is "Neosantara"
17
+ provider (str): The provider of the model. Default is "Neosantara".
18
+ api_key (str): The api key to authorize request to Neosantara.
19
+ base_url (str): The base url to which the requests are sent. Defaults to "https://api.neosantara.xyz/v1".
20
+ """
21
+
22
+ id: str = "grok-4.1-fast-non-reasoning"
23
+ name: str = "Neosantara"
24
+ provider: str = "Neosantara"
25
+ api_key: Optional[str] = None
26
+ base_url: str = "https://api.neosantara.xyz/v1"
27
+
28
+ def _get_client_params(self) -> Dict[str, Any]:
29
+ """
30
+ Returns client parameters for API requests, checking for NEOSANTARA_API_KEY.
31
+
32
+ Returns:
33
+ Dict[str, Any]: A dictionary of client parameters for API requests.
34
+ """
35
+ if not self.api_key:
36
+ self.api_key = getenv("NEOSANTARA_API_KEY")
37
+ if not self.api_key:
38
+ raise ModelAuthenticationError(
39
+ message="NEOSANTARA_API_KEY not set. Please set the NEOSANTARA_API_KEY environment variable.",
40
+ model_name=self.name,
41
+ )
42
+ return super()._get_client_params()
agno/models/utils.py CHANGED
@@ -149,6 +149,11 @@ def _get_model_class(model_id: str, model_provider: str) -> Model:
149
149
 
150
150
  return Nebius(id=model_id)
151
151
 
152
+ elif model_provider == "neosantara":
153
+ from agno.models.neosantara import Neosantara
154
+
155
+ return Neosantara(id=model_id)
156
+
152
157
  elif model_provider == "nexus":
153
158
  from agno.models.nexus import Nexus
154
159
 
agno/os/app.py CHANGED
@@ -1056,12 +1056,15 @@ class AgentOS:
1056
1056
  dbs_with_specific_config = [db.db_id for db in knowledge_config.dbs]
1057
1057
 
1058
1058
  # Only add databases that are actually used for knowledge contents
1059
- for db_id in self.knowledge_dbs.keys():
1059
+ for db_id, dbs in self.knowledge_dbs.items():
1060
1060
  if db_id not in dbs_with_specific_config:
1061
+ # Collect unique table names from all databases with the same id
1062
+ unique_tables = list(set(db.knowledge_table_name for db in dbs))
1061
1063
  knowledge_config.dbs.append(
1062
1064
  DatabaseConfig(
1063
1065
  db_id=db_id,
1064
1066
  domain_config=KnowledgeDomainConfig(display_name=db_id),
1067
+ tables=unique_tables,
1065
1068
  )
1066
1069
  )
1067
1070
 
@@ -14,7 +14,7 @@ try:
14
14
  )
15
15
  from ag_ui.encoder import EventEncoder
16
16
  except ImportError as e:
17
- raise ImportError("`ag_ui` not installed. Please install it with `pip install -U ag-ui`") from e
17
+ raise ImportError("`ag_ui` not installed. Please install it with `pip install -U ag-ui-protocol`") from e
18
18
 
19
19
  from fastapi import APIRouter
20
20
  from fastapi.responses import StreamingResponse
@@ -243,6 +243,8 @@ def attach_routes(
243
243
  update_kwargs["description"] = body.description
244
244
  if body.metadata is not None:
245
245
  update_kwargs["metadata"] = body.metadata
246
+ if body.current_version is not None:
247
+ update_kwargs["current_version"] = body.current_version
246
248
  if body.component_type is not None:
247
249
  update_kwargs["component_type"] = DbComponentType(body.component_type)
248
250
 
@@ -215,7 +215,6 @@ def attach_routes(router: APIRouter, knowledge_instances: List[Union[Knowledge,
215
215
  description=(
216
216
  "Upload content from a remote source (S3, GCS, SharePoint, GitHub) to the knowledge base. "
217
217
  "Content is processed asynchronously in the background. "
218
- "Use the /knowledge/config endpoint to see available remote content sources."
219
218
  ),
220
219
  responses={
221
220
  202: {