3030 List ,
3131 Optional ,
3232 Sequence ,
33+ TYPE_CHECKING ,
3334 Tuple ,
3435 Type ,
3536 cast ,
3839from aea .agent import Agent
3940from aea .agent_loop import AsyncAgentLoop , BaseAgentLoop , SyncAgentLoop
4041from aea .configurations .base import PublicId
41- from aea .configurations .constants import DEFAULT_SKILL
42+ from aea .configurations .constants import (
43+ DEFAULT_PROTOCOL ,
44+ DEFAULT_SEARCH_SERVICE_ADDRESS ,
45+ DEFAULT_SKILL ,
46+ )
4247from aea .connections .base import Connection
4348from aea .context .base import AgentContext
4449from aea .crypto .wallet import Wallet
4550from aea .decision_maker .base import DecisionMakerHandler
46- from aea .decision_maker .default import (
47- DecisionMakerHandler as DefaultDecisionMakerHandler ,
48- )
4951from aea .exceptions import AEAException
5052from aea .helpers .exception_policy import ExceptionPolicyEnum
5153from aea .helpers .logging import AgentLoggerAdapter , get_logger
5254from aea .identity .base import Identity
5355from aea .mail .base import Envelope
54- from aea .protocols .base import Message
55- from aea .protocols .default .message import DefaultMessage
56+ from aea .protocols .base import Message , Protocol
5657from aea .registries .filter import Filter
5758from aea .registries .resources import Resources
5859from aea .runtime import _StopRuntime
5960from aea .skills .base import Behaviour , Handler
60- from aea .skills .error .handlers import ErrorHandler
61+
62+
63+ if TYPE_CHECKING :
64+ from packages .fetchai .skills .error .handlers import ( # noqa: F401 # pragma: nocover
65+ ErrorHandler ,
66+ )
6167
6268
6369class AEA (Agent ):
@@ -78,17 +84,15 @@ def __init__(
7884 period : float = 0.05 ,
7985 execution_timeout : float = 0 ,
8086 max_reactions : int = 20 ,
81- decision_maker_handler_class : Type [
82- DecisionMakerHandler
83- ] = DefaultDecisionMakerHandler ,
87+ decision_maker_handler_class : Optional [Type [DecisionMakerHandler ]] = None ,
8488 skill_exception_policy : ExceptionPolicyEnum = ExceptionPolicyEnum .propagate ,
8589 connection_exception_policy : ExceptionPolicyEnum = ExceptionPolicyEnum .propagate ,
8690 loop_mode : Optional [str ] = None ,
8791 runtime_mode : Optional [str ] = None ,
8892 default_connection : Optional [PublicId ] = None ,
8993 default_routing : Optional [Dict [PublicId , PublicId ]] = None ,
9094 connection_ids : Optional [Collection [PublicId ]] = None ,
91- search_service_address : str = "fetchai/soef:*" ,
95+ search_service_address : str = DEFAULT_SEARCH_SERVICE_ADDRESS ,
9296 ** kwargs ,
9397 ) -> None :
9498 """
@@ -132,6 +136,13 @@ def __init__(
132136 )
133137
134138 self .max_reactions = max_reactions
139+
140+ if decision_maker_handler_class is None :
141+ from aea .decision_maker .default import ( # isort:skip # pylint: disable=import-outside-toplevel
142+ DecisionMakerHandler as DefaultDecisionMakerHandler ,
143+ )
144+
145+ decision_maker_handler_class = DefaultDecisionMakerHandler
135146 decision_maker_handler = decision_maker_handler_class (
136147 identity = identity , wallet = wallet
137148 )
@@ -229,38 +240,37 @@ def get_multiplexer_setup_options(self) -> Optional[Dict]:
229240 default_connection = self .context .default_connection ,
230241 )
231242
232- def _get_error_handler (self ) -> Optional [ Handler ] :
243+ def _get_error_handler (self ) -> Handler :
233244 """Get error handler."""
234- return self .resources .get_handler (DefaultMessage .protocol_id , DEFAULT_SKILL )
245+ handler = self .resources .get_handler (DEFAULT_PROTOCOL , DEFAULT_SKILL )
246+ if handler is None :
247+ self .logger .warning ("ErrorHandler not initialized. Stopping AEA!" )
248+ raise _StopRuntime ()
249+ return handler
235250
236251 def _get_msg_and_handlers_for_envelope (
237252 self , envelope : Envelope
238253 ) -> Tuple [Optional [Message ], List [Handler ]]:
239254 protocol = self .resources .get_protocol (envelope .protocol_id )
240255
256+ msg , handlers = self ._handle_decoding (envelope , protocol )
257+
258+ return msg , handlers
259+
260+ def _handle_decoding (
261+ self , envelope : Envelope , protocol : Optional [Protocol ]
262+ ) -> Tuple [Optional [Message ], List [Handler ]]:
241263 error_handler = self ._get_error_handler ()
242264
243- if error_handler is None :
244- self . logger . warning ( " ErrorHandler not initialized. Stopping AEA!" )
245- raise _StopRuntime ( )
265+ from packages . fetchai . skills . error . handlers import ( # noqa: F811 # pylint: disable=import-outside-toplevel
266+ ErrorHandler ,
267+ )
246268
247269 error_handler = cast (ErrorHandler , error_handler )
248270
249271 if protocol is None :
250272 error_handler .send_unsupported_protocol (envelope )
251- return None , []
252-
253- if isinstance (envelope .message , Message ):
254- msg = envelope .message
255- else :
256- try :
257- msg = protocol .serializer .decode (envelope .message )
258- msg .sender = envelope .sender
259- msg .to = envelope .to
260- except Exception as e : # pylint: disable=broad-except # thats ok, because we send the decoding error back
261- self .logger .warning ("Decoding error. Exception: {}" .format (str (e )))
262- error_handler .send_decoding_error (envelope )
263- return None , []
273+ return None , [] # Tuple[Optional[Message], List[Handler]]
264274
265275 handlers = self .filter .get_active_handlers (
266276 protocol .public_id , envelope .skill_id
@@ -270,7 +280,18 @@ def _get_msg_and_handlers_for_envelope(
270280 error_handler .send_unsupported_skill (envelope )
271281 return None , []
272282
273- return msg , handlers
283+ if isinstance (envelope .message , Message ):
284+ msg = envelope .message
285+ return msg , handlers
286+ try :
287+ msg = protocol .serializer .decode (envelope .message )
288+ msg .sender = envelope .sender
289+ msg .to = envelope .to
290+ return msg , handlers
291+ except Exception as e : # pylint: disable=broad-except # thats ok, because we send the decoding error back
292+ self .logger .warning ("Decoding error. Exception: {}" .format (str (e )))
293+ error_handler .send_decoding_error (envelope )
294+ return None , []
274295
275296 def handle_envelope (self , envelope : Envelope ) -> None :
276297 """
0 commit comments