@@ -590,6 +590,44 @@ def _StructuredMemorySchemaConfig_to_vertex(
590590 return to_object
591591
592592
593+ def _UpdateMemoryBankConfig_to_vertex (
594+ from_object : Union [dict [str , Any ], object ],
595+ parent_object : Optional [dict [str , Any ]] = None ,
596+ ) -> dict [str , Any ]:
597+ to_object : dict [str , Any ] = {}
598+
599+ if getv (from_object , ["display_name" ]) is not None :
600+ setv (parent_object , ["displayName" ], getv (from_object , ["display_name" ]))
601+
602+ if getv (from_object , ["description" ]) is not None :
603+ setv (parent_object , ["description" ], getv (from_object , ["description" ]))
604+
605+ return to_object
606+
607+
608+ def _UpdateMemoryBankRequestParameters_to_vertex (
609+ from_object : Union [dict [str , Any ], object ],
610+ parent_object : Optional [dict [str , Any ]] = None ,
611+ ) -> dict [str , Any ]:
612+ to_object : dict [str , Any ] = {}
613+ if getv (from_object , ["name" ]) is not None :
614+ setv (to_object , ["_url" , "name" ], getv (from_object , ["name" ]))
615+
616+ if getv (from_object , ["memory_bank_config" ]) is not None :
617+ setv (
618+ to_object ,
619+ ["context_spec" , "memory_bank_config" ],
620+ _ReasoningEngineContextSpecMemoryBankConfig_to_vertex (
621+ getv (from_object , ["memory_bank_config" ]), to_object
622+ ),
623+ )
624+
625+ if getv (from_object , ["config" ]) is not None :
626+ _UpdateMemoryBankConfig_to_vertex (getv (from_object , ["config" ]), to_object )
627+
628+ return to_object
629+
630+
593631class MemoryBanks (_api_module .BaseModule ):
594632
595633 def _create (
@@ -669,6 +707,85 @@ def _create(
669707 self ._api_client ._verify_response (return_value )
670708 return return_value
671709
710+ def _update (
711+ self ,
712+ * ,
713+ name : str ,
714+ memory_bank_config : Optional [
715+ types .ReasoningEngineContextSpecMemoryBankConfigOrDict
716+ ] = None ,
717+ config : Optional [types .UpdateMemoryBankConfigOrDict ] = None ,
718+ ) -> types .MemoryBankOperation :
719+ """
720+ Updates a Memory Bank.
721+ """
722+
723+ parameter_model = types ._UpdateMemoryBankRequestParameters (
724+ name = name ,
725+ memory_bank_config = memory_bank_config ,
726+ config = config ,
727+ )
728+
729+ request_url_dict : Optional [dict [str , str ]]
730+ if not self ._api_client .vertexai :
731+ raise ValueError (
732+ "This method is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode."
733+ )
734+ else :
735+ request_dict = _UpdateMemoryBankRequestParameters_to_vertex (parameter_model )
736+ request_url_dict = request_dict .get ("_url" )
737+ if request_url_dict :
738+ path = "{name}" .format_map (request_url_dict )
739+ else :
740+ path = "{name}"
741+
742+ query_params = request_dict .get ("_query" )
743+ if query_params :
744+ path = f"{ path } ?{ urlencode (query_params )} "
745+ # TODO: remove the hack that pops config.
746+ request_dict .pop ("config" , None )
747+
748+ http_options : Optional [types .HttpOptions ] = None
749+ if (
750+ parameter_model .config is not None
751+ and parameter_model .config .http_options is not None
752+ ):
753+ http_options = parameter_model .config .http_options
754+
755+ request_dict = _common .convert_to_dict (request_dict )
756+ request_dict = _common .encode_unserializable_types (request_dict )
757+
758+ response = self ._api_client .request ("patch" , path , request_dict , http_options )
759+
760+ response_dict = {} if not response .body else json .loads (response .body )
761+
762+ if self ._api_client .vertexai :
763+ response_dict = _MemoryBankOperation_from_vertex (response_dict )
764+
765+ return_value = types .MemoryBankOperation ._from_response (
766+ response = response_dict ,
767+ kwargs = (
768+ {
769+ "config" : {
770+ "response_schema" : getattr (
771+ parameter_model .config , "response_schema" , None
772+ ),
773+ "response_json_schema" : getattr (
774+ parameter_model .config , "response_json_schema" , None
775+ ),
776+ "include_all_fields" : getattr (
777+ parameter_model .config , "include_all_fields" , None
778+ ),
779+ }
780+ }
781+ if getattr (parameter_model , "config" , None )
782+ else {}
783+ ),
784+ )
785+
786+ self ._api_client ._verify_response (return_value )
787+ return return_value
788+
672789 def _delete (
673790 self ,
674791 * ,
@@ -1082,6 +1199,41 @@ def create(
10821199 memory_bank = types .MemoryBank (name = operation .response .name )
10831200 return memory_bank
10841201
1202+ def update (
1203+ self ,
1204+ * ,
1205+ name : str ,
1206+ managed_semantic_memory_config : Optional [
1207+ types .ManagedSemanticMemoryConfigOrDict
1208+ ] = None ,
1209+ config : Optional [types .UpdateMemoryBankConfigOrDict ] = None ,
1210+ ) -> types .MemoryBank :
1211+ """Updates a Memory Bank resource."""
1212+ memory_bank_config = (
1213+ _memory_bank_utils ._managed_semantic_memory_config_to_memory_bank_config (
1214+ managed_semantic_memory_config
1215+ )
1216+ )
1217+
1218+ operation = self ._update (
1219+ name = name ,
1220+ memory_bank_config = memory_bank_config ,
1221+ config = config ,
1222+ )
1223+
1224+ operation = _memory_bank_utils ._await_operation (
1225+ operation_name = operation .name ,
1226+ get_operation_fn = self ._get_memory_bank_operation ,
1227+ )
1228+ if operation .error :
1229+ raise RuntimeError (operation .error )
1230+ if not operation .response :
1231+ raise RuntimeError (
1232+ f"Memory Bank update completed without a response: { operation } "
1233+ )
1234+ memory_bank = types .MemoryBank (name = operation .response .name )
1235+ return memory_bank
1236+
10851237 def delete (
10861238 self ,
10871239 * ,
@@ -1332,6 +1484,87 @@ async def _create(
13321484 self ._api_client ._verify_response (return_value )
13331485 return return_value
13341486
1487+ async def _update (
1488+ self ,
1489+ * ,
1490+ name : str ,
1491+ memory_bank_config : Optional [
1492+ types .ReasoningEngineContextSpecMemoryBankConfigOrDict
1493+ ] = None ,
1494+ config : Optional [types .UpdateMemoryBankConfigOrDict ] = None ,
1495+ ) -> types .MemoryBankOperation :
1496+ """
1497+ Updates a Memory Bank.
1498+ """
1499+
1500+ parameter_model = types ._UpdateMemoryBankRequestParameters (
1501+ name = name ,
1502+ memory_bank_config = memory_bank_config ,
1503+ config = config ,
1504+ )
1505+
1506+ request_url_dict : Optional [dict [str , str ]]
1507+ if not self ._api_client .vertexai :
1508+ raise ValueError (
1509+ "This method is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode."
1510+ )
1511+ else :
1512+ request_dict = _UpdateMemoryBankRequestParameters_to_vertex (parameter_model )
1513+ request_url_dict = request_dict .get ("_url" )
1514+ if request_url_dict :
1515+ path = "{name}" .format_map (request_url_dict )
1516+ else :
1517+ path = "{name}"
1518+
1519+ query_params = request_dict .get ("_query" )
1520+ if query_params :
1521+ path = f"{ path } ?{ urlencode (query_params )} "
1522+ # TODO: remove the hack that pops config.
1523+ request_dict .pop ("config" , None )
1524+
1525+ http_options : Optional [types .HttpOptions ] = None
1526+ if (
1527+ parameter_model .config is not None
1528+ and parameter_model .config .http_options is not None
1529+ ):
1530+ http_options = parameter_model .config .http_options
1531+
1532+ request_dict = _common .convert_to_dict (request_dict )
1533+ request_dict = _common .encode_unserializable_types (request_dict )
1534+
1535+ response = await self ._api_client .async_request (
1536+ "patch" , path , request_dict , http_options
1537+ )
1538+
1539+ response_dict = {} if not response .body else json .loads (response .body )
1540+
1541+ if self ._api_client .vertexai :
1542+ response_dict = _MemoryBankOperation_from_vertex (response_dict )
1543+
1544+ return_value = types .MemoryBankOperation ._from_response (
1545+ response = response_dict ,
1546+ kwargs = (
1547+ {
1548+ "config" : {
1549+ "response_schema" : getattr (
1550+ parameter_model .config , "response_schema" , None
1551+ ),
1552+ "response_json_schema" : getattr (
1553+ parameter_model .config , "response_json_schema" , None
1554+ ),
1555+ "include_all_fields" : getattr (
1556+ parameter_model .config , "include_all_fields" , None
1557+ ),
1558+ }
1559+ }
1560+ if getattr (parameter_model , "config" , None )
1561+ else {}
1562+ ),
1563+ )
1564+
1565+ self ._api_client ._verify_response (return_value )
1566+ return return_value
1567+
13351568 async def _delete (
13361569 self ,
13371570 * ,
@@ -1755,6 +1988,41 @@ async def create(
17551988 memory_bank = types .MemoryBank (name = operation .response .name )
17561989 return memory_bank
17571990
1991+ async def update (
1992+ self ,
1993+ * ,
1994+ name : str ,
1995+ managed_semantic_memory_config : Optional [
1996+ types .ManagedSemanticMemoryConfigOrDict
1997+ ] = None ,
1998+ config : Optional [types .UpdateMemoryBankConfigOrDict ] = None ,
1999+ ) -> types .MemoryBank :
2000+ """Updates a Memory Bank."""
2001+ memory_bank_config = (
2002+ _memory_bank_utils ._managed_semantic_memory_config_to_memory_bank_config (
2003+ managed_semantic_memory_config
2004+ )
2005+ )
2006+
2007+ operation = await self ._update (
2008+ name = name ,
2009+ memory_bank_config = memory_bank_config ,
2010+ config = config ,
2011+ )
2012+
2013+ operation = await _memory_bank_utils ._await_async_operation (
2014+ operation_name = operation .name ,
2015+ get_operation_fn = self ._get_memory_bank_operation ,
2016+ )
2017+ if operation .error :
2018+ raise RuntimeError (operation .error )
2019+ if not operation .response :
2020+ raise RuntimeError (
2021+ f"Memory Bank update completed without a response: { operation } "
2022+ )
2023+ memory_bank = types .MemoryBank (name = operation .response .name )
2024+ return memory_bank
2025+
17582026 async def delete (
17592027 self ,
17602028 * ,
0 commit comments