1010from botocore .config import Config as BotocoreConfig
1111from botocore .exceptions import ClientError
1212
13+ from bedrock_agentcore ._utils .namespace import build_namespace_params , resolve_namespace_prefix_deprecation
1314from bedrock_agentcore ._utils .snake_case import accept_snake_case_kwargs
1415
1516from .constants import BlobMessage , ConversationalMessage , MessageRole , RetrievalConfig
@@ -398,8 +399,9 @@ def _retrieve_memories_for_llm(
398399 strategyId = config .strategy_id or "" ,
399400 )
400401 search_query = f"{ config .retrieval_query } { user_input } " if config .retrieval_query else user_input
402+ # TODO: revisit after full deprecation of namespace fields
401403 memory_records = self .search_long_term_memories (
402- query = search_query , namespace_prefix = resolved_namespace , top_k = config .top_k
404+ query = search_query , namespace = resolved_namespace , top_k = config .top_k
403405 )
404406 # Filter memory records with a relevance score which is lower than config.relevance_score
405407 if config .relevance_score :
@@ -895,26 +897,45 @@ def delete_event(self, actor_id: str, session_id: str, event_id: str):
895897 def search_long_term_memories (
896898 self ,
897899 query : str ,
898- namespace_prefix : str ,
900+ namespace_prefix : Optional [ str ] = None ,
899901 top_k : int = 3 ,
900902 strategy_id : str = None ,
901903 max_results : int = 20 ,
904+ namespace : Optional [str ] = None ,
905+ namespace_path : Optional [str ] = None ,
902906 ) -> List [MemoryRecord ]:
903907 """Performs a semantic search against the long-term memory for this actor.
904908
905909 Maps to: bedrock-agentcore.retrieve_memory_records.
910+
911+ Exactly one of ``namespace`` (exact match), ``namespace_path`` (hierarchical
912+ path prefix), or ``namespace_prefix`` (DEPRECATED alias for ``namespace``)
913+ must be provided.
914+
915+ Args:
916+ query: Search query
917+ namespace_prefix: DEPRECATED. Use ``namespace`` or ``namespace_path`` instead.
918+ top_k: Number of top-scoring records to return
919+ strategy_id: Optional strategy filter
920+ max_results: Maximum records to return
921+ namespace: Exact-match namespace (preserves pre-redesign behavior during the
922+ service grace period)
923+ namespace_path: Hierarchical path-prefix namespace
906924 """
907- logger .info (" -> Querying long-term memory in namespace '%s' with query: '%s'..." , namespace_prefix , query )
925+ resolved_namespace = resolve_namespace_prefix_deprecation (namespace_prefix , namespace )
926+ ns_params = build_namespace_params (resolved_namespace , namespace_path )
927+ ns_value = resolved_namespace or namespace_path
928+
929+ logger .info (" -> Querying long-term memory in namespace '%s' with query: '%s'..." , ns_value , query )
908930 search_criteria = {"searchQuery" : query , "topK" : top_k }
909931 if strategy_id :
910932 search_criteria ["memoryStrategyId" ] = strategy_id
911933
912- namespace = namespace_prefix
913934 params = {
914935 "memoryId" : self ._memory_id ,
915936 "searchCriteria" : search_criteria ,
916- "namespace" : namespace ,
917937 "maxResults" : max_results ,
938+ ** ns_params ,
918939 }
919940
920941 try :
@@ -927,20 +948,41 @@ def search_long_term_memories(
927948 raise
928949
929950 def list_long_term_memory_records (
930- self , namespace_prefix : str , strategy_id : Optional [str ] = None , max_results : int = 10
951+ self ,
952+ namespace_prefix : Optional [str ] = None ,
953+ strategy_id : Optional [str ] = None ,
954+ max_results : int = 10 ,
955+ namespace : Optional [str ] = None ,
956+ namespace_path : Optional [str ] = None ,
931957 ) -> List [MemoryRecord ]:
932958 """Lists all long-term memory records for this actor without a semantic query.
933959
934960 Maps to: bedrock-agentcore.list_memory_records.
961+
962+ Exactly one of ``namespace`` (exact match), ``namespace_path`` (hierarchical
963+ path prefix), or ``namespace_prefix`` (DEPRECATED alias for ``namespace``)
964+ must be provided.
965+
966+ Args:
967+ namespace_prefix: DEPRECATED. Use ``namespace`` or ``namespace_path`` instead.
968+ strategy_id: Optional strategy filter
969+ max_results: Maximum records to return
970+ namespace: Exact-match namespace (preserves pre-redesign behavior during the
971+ service grace period)
972+ namespace_path: Hierarchical path-prefix namespace
935973 """
936- logger .info (" -> Listing all long-term records in namespace '%s'..." , namespace_prefix )
974+ resolved_namespace = resolve_namespace_prefix_deprecation (namespace_prefix , namespace )
975+ ns_params = build_namespace_params (resolved_namespace , namespace_path )
976+ ns_value = resolved_namespace or namespace_path
977+
978+ logger .info (" -> Listing all long-term records in namespace '%s'..." , ns_value )
937979
938980 try :
939981 paginator = self ._data_plane_client .get_paginator ("list_memory_records" )
940982
941983 params = {
942984 "memoryId" : self ._memory_id ,
943- "namespace" : namespace_prefix ,
985+ ** ns_params ,
944986 }
945987
946988 if strategy_id :
@@ -1049,7 +1091,8 @@ def delete_all_long_term_memories_in_namespace(self, namespace: str) -> Dict[str
10491091 logger .info ("🗑️ Deleting all long-term memories in namespace '%s'..." , namespace )
10501092
10511093 # Retrieve all memory records in the specified namespace
1052- memory_records = self .list_long_term_memory_records (namespace_prefix = namespace )
1094+ # TODO: revisit after full deprecation of namespace fields
1095+ memory_records = self .list_long_term_memory_records (namespace = namespace )
10531096 logger .info (" -> Found %d memory records to delete" , len (memory_records ))
10541097
10551098 if not memory_records :
@@ -1203,19 +1246,40 @@ def delete_memory_record(self, record_id: str):
12031246 def search_long_term_memories (
12041247 self ,
12051248 query : str ,
1206- namespace_prefix : str ,
1249+ namespace_prefix : Optional [ str ] = None ,
12071250 top_k : int = 3 ,
12081251 strategy_id : Optional [str ] = None ,
12091252 max_results : int = 20 ,
1253+ namespace : Optional [str ] = None ,
1254+ namespace_path : Optional [str ] = None ,
12101255 ) -> List [MemoryRecord ]:
12111256 """Delegates to manager.search_long_term_memories."""
1212- return self ._manager .search_long_term_memories (query , namespace_prefix , top_k , strategy_id , max_results )
1257+ return self ._manager .search_long_term_memories (
1258+ query ,
1259+ namespace_prefix ,
1260+ top_k ,
1261+ strategy_id ,
1262+ max_results ,
1263+ namespace = namespace ,
1264+ namespace_path = namespace_path ,
1265+ )
12131266
12141267 def list_long_term_memory_records (
1215- self , namespace_prefix : str , strategy_id : Optional [str ] = None , max_results : int = 10
1268+ self ,
1269+ namespace_prefix : Optional [str ] = None ,
1270+ strategy_id : Optional [str ] = None ,
1271+ max_results : int = 10 ,
1272+ namespace : Optional [str ] = None ,
1273+ namespace_path : Optional [str ] = None ,
12161274 ) -> List [MemoryRecord ]:
12171275 """Delegates to manager.list_long_term_memory_records."""
1218- return self ._manager .list_long_term_memory_records (namespace_prefix , strategy_id , max_results )
1276+ return self ._manager .list_long_term_memory_records (
1277+ namespace_prefix ,
1278+ strategy_id ,
1279+ max_results ,
1280+ namespace = namespace ,
1281+ namespace_path = namespace_path ,
1282+ )
12191283
12201284 def list_actors (self ) -> List [ActorSummary ]:
12211285 """Delegates to manager.list_actors."""
0 commit comments