uagents-core 0.3.4__tar.gz → 0.3.5__tar.gz

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 (23) hide show
  1. {uagents_core-0.3.4 → uagents_core-0.3.5}/PKG-INFO +1 -1
  2. {uagents_core-0.3.4 → uagents_core-0.3.5}/pyproject.toml +1 -1
  3. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/types.py +29 -0
  4. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/utils/messages.py +9 -5
  5. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/utils/resolver.py +18 -0
  6. {uagents_core-0.3.4 → uagents_core-0.3.5}/README.md +0 -0
  7. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/__init__.py +0 -0
  8. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/config.py +0 -0
  9. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/contrib/__init__.py +0 -0
  10. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/contrib/protocols/__init__.py +0 -0
  11. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/contrib/protocols/chat/__init__.py +0 -0
  12. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/contrib/protocols/subscriptions/__init__.py +0 -0
  13. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/envelope.py +0 -0
  14. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/helpers.py +0 -0
  15. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/identity.py +0 -0
  16. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/logger.py +0 -0
  17. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/models.py +0 -0
  18. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/protocol.py +0 -0
  19. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/registration.py +0 -0
  20. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/storage.py +0 -0
  21. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/utils/__init__.py +0 -0
  22. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/utils/registration.py +0 -0
  23. {uagents_core-0.3.4 → uagents_core-0.3.5}/uagents_core/utils/subscriptions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: uagents-core
3
- Version: 0.3.4
3
+ Version: 0.3.5
4
4
  Summary: Core components for agent based systems
5
5
  License: Apache 2.0
6
6
  Author: Ed FitzGerald
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uagents-core"
3
- version = "0.3.4"
3
+ version = "0.3.5"
4
4
  description = "Core components for agent based systems"
5
5
  authors = [
6
6
  { name = "Ed FitzGerald", email = "edward.fitzgerald@fetch.ai" },
@@ -1,4 +1,5 @@
1
1
  import uuid
2
+ from abc import ABC, abstractmethod
2
3
  from enum import Enum
3
4
  from typing import Any, Literal
4
5
 
@@ -48,3 +49,31 @@ class MsgStatus(BaseModel):
48
49
  destination: str
49
50
  endpoint: str
50
51
  session: uuid.UUID | None = None
52
+
53
+
54
+ class Resolver(ABC):
55
+ @abstractmethod
56
+ async def resolve(self, destination: str) -> tuple[str | None, list[str]]:
57
+ """
58
+ Resolve the destination to an address and endpoint.
59
+
60
+ Args:
61
+ destination (str): The destination name or address to resolve.
62
+
63
+ Returns:
64
+ tuple[str | None, list[str]]: The address (if available) and resolved endpoints.
65
+ """
66
+ raise NotImplementedError
67
+
68
+ @abstractmethod
69
+ def sync_resolve(self, destination: str) -> list[str]:
70
+ """
71
+ Resolve the destination to a list of endpoints.
72
+
73
+ Args:
74
+ destination (str): The destination name or address to resolve.
75
+
76
+ Returns:
77
+ list[str]: The resolved endpoints.
78
+ """
79
+ raise NotImplementedError
@@ -14,8 +14,8 @@ from uagents_core.helpers import weighted_random_sample
14
14
  from uagents_core.identity import Identity
15
15
  from uagents_core.logger import get_logger
16
16
  from uagents_core.models import Model
17
- from uagents_core.types import DeliveryStatus, MsgStatus
18
- from uagents_core.utils.resolver import lookup_endpoint_for_agent
17
+ from uagents_core.types import DeliveryStatus, MsgStatus, Resolver
18
+ from uagents_core.utils.resolver import AlmanacResolver
19
19
 
20
20
  logger = get_logger("uagents_core.utils.messages")
21
21
 
@@ -89,6 +89,7 @@ def send_message_to_agent(
89
89
  session_id: UUID | None = None,
90
90
  strategy: Literal["first", "random", "all"] = "first",
91
91
  agentverse_config: AgentverseConfig | None = None,
92
+ resolver: Resolver | None = None,
92
93
  ) -> list[MsgStatus]:
93
94
  """
94
95
  Send a message to an agent with default settings.
@@ -103,9 +104,12 @@ def send_message_to_agent(
103
104
  agentverse_config (AgentverseConfig, optional): The configuration for the agentverse.
104
105
  """
105
106
  agentverse_config = agentverse_config or AgentverseConfig()
106
- endpoints = lookup_endpoint_for_agent(
107
- agent_identifier=destination, agentverse_config=agentverse_config
108
- )
107
+
108
+ if not resolver:
109
+ resolver = AlmanacResolver(
110
+ agentverse_config=agentverse_config,
111
+ )
112
+ endpoints = resolver.sync_resolve(destination)
109
113
  if not endpoints:
110
114
  logger.error("No endpoints found for agent", extra={"destination": destination})
111
115
  return []
@@ -14,6 +14,7 @@ from uagents_core.config import (
14
14
  from uagents_core.helpers import weighted_random_sample
15
15
  from uagents_core.identity import parse_identifier
16
16
  from uagents_core.logger import get_logger
17
+ from uagents_core.types import Resolver
17
18
 
18
19
  logger = get_logger("uagents_core.utils.resolver")
19
20
 
@@ -71,3 +72,20 @@ def lookup_endpoint_for_agent(
71
72
  )
72
73
 
73
74
  return []
75
+
76
+
77
+ class AlmanacResolver(Resolver):
78
+ def __init__(self, agentverse_config: AgentverseConfig | None = None):
79
+ self.agentverse_config = agentverse_config or AgentverseConfig()
80
+
81
+ async def resolve(self, destination: str) -> tuple[str | None, list[str]]:
82
+ endpoints = lookup_endpoint_for_agent(
83
+ agent_identifier=destination, agentverse_config=self.agentverse_config
84
+ )
85
+ return None, endpoints
86
+
87
+ def sync_resolve(self, destination: str) -> list[str]:
88
+ endpoints = lookup_endpoint_for_agent(
89
+ agent_identifier=destination, agentverse_config=self.agentverse_config
90
+ )
91
+ return endpoints
File without changes