8686 except (ImportError , AttributeError ):
8787 BaseMemoryService = Any
8888
89+ try :
90+ from google .adk .auth .credential_service .base_credential_service import (
91+ BaseCredentialService ,
92+ )
93+
94+ BaseCredentialService = BaseCredentialService
95+ except (ImportError , AttributeError ):
96+ BaseCredentialService = Any
97+
8998 try :
9099 from opentelemetry .sdk import trace
91100
@@ -682,6 +691,9 @@ def __init__(
682691 session_service_builder : Optional [Callable [..., "BaseSessionService" ]] = None ,
683692 artifact_service_builder : Optional [Callable [..., "BaseArtifactService" ]] = None ,
684693 memory_service_builder : Optional [Callable [..., "BaseMemoryService" ]] = None ,
694+ credential_service_builder : Optional [
695+ Callable [..., "BaseCredentialService" ]
696+ ] = None ,
685697 instrumentor_builder : Optional [Callable [..., Any ]] = None ,
686698 ):
687699 """An ADK Application.
@@ -715,6 +727,9 @@ def __init__(
715727 Defaults to a callable that returns InMemoryMemoryService
716728 when running locally and VertexAiMemoryBankService when running
717729 on Agent Engine.
730+ credential_service_builder (Callable[..., BaseCredentialService]):
731+ Optional. A callable that returns an ADK credential service.
732+ Defaults to a callable that returns InMemoryCredentialService.
718733 instrumentor_builder (Callable[..., Any]):
719734 Optional. Callable that returns a new instrumentor. This can be
720735 used for customizing the instrumentation logic of the Agent.
@@ -759,6 +774,7 @@ def __init__(
759774 "session_service_builder" : session_service_builder ,
760775 "artifact_service_builder" : artifact_service_builder ,
761776 "memory_service_builder" : memory_service_builder ,
777+ "credential_service_builder" : credential_service_builder ,
762778 "instrumentor_builder" : instrumentor_builder ,
763779 "express_mode_api_key" : (
764780 initializer .global_config .api_key or os .environ .get ("GOOGLE_API_KEY" )
@@ -912,6 +928,9 @@ def clone(self):
912928 session_service_builder = self ._tmpl_attrs .get ("session_service_builder" ),
913929 artifact_service_builder = self ._tmpl_attrs .get ("artifact_service_builder" ),
914930 memory_service_builder = self ._tmpl_attrs .get ("memory_service_builder" ),
931+ credential_service_builder = self ._tmpl_attrs .get (
932+ "credential_service_builder"
933+ ),
915934 instrumentor_builder = self ._tmpl_attrs .get ("instrumentor_builder" ),
916935 )
917936
@@ -924,6 +943,9 @@ def set_up(self):
924943 InMemoryArtifactService ,
925944 )
926945 from google .adk .memory .in_memory_memory_service import InMemoryMemoryService
946+ from google .adk .auth .credential_service .in_memory_credential_service import (
947+ InMemoryCredentialService ,
948+ )
927949
928950 os .environ ["GOOGLE_GENAI_USE_VERTEXAI" ] = "1"
929951 project = self ._tmpl_attrs .get ("project" )
@@ -1078,6 +1100,12 @@ def set_up(self):
10781100 else :
10791101 self ._tmpl_attrs ["memory_service" ] = InMemoryMemoryService ()
10801102
1103+ credential_service_builder = self ._tmpl_attrs .get ("credential_service_builder" )
1104+ if credential_service_builder :
1105+ self ._tmpl_attrs ["credential_service" ] = credential_service_builder ()
1106+ else :
1107+ self ._tmpl_attrs ["credential_service" ] = InMemoryCredentialService ()
1108+
10811109 self ._tmpl_attrs ["runner" ] = Runner (
10821110 app = self ._tmpl_attrs .get ("app" ),
10831111 agent = (
@@ -1094,6 +1122,7 @@ def set_up(self):
10941122 session_service = self ._tmpl_attrs .get ("session_service" ),
10951123 artifact_service = self ._tmpl_attrs .get ("artifact_service" ),
10961124 memory_service = self ._tmpl_attrs .get ("memory_service" ),
1125+ credential_service = self ._tmpl_attrs .get ("credential_service" ),
10971126 )
10981127 self ._tmpl_attrs ["in_memory_session_service" ] = InMemorySessionService ()
10991128 self ._tmpl_attrs ["in_memory_artifact_service" ] = InMemoryArtifactService ()
@@ -1183,11 +1212,16 @@ async def async_stream_query(
11831212 from google .adk .events .event import Event
11841213
11851214 session_service = self ._tmpl_attrs .get ("session_service" )
1215+ session_obj = await session_service .get_session (
1216+ app_name = self ._app_name (),
1217+ user_id = user_id ,
1218+ session_id = session_id ,
1219+ )
11861220 for event in session_events :
11871221 if not isinstance (event , Event ):
11881222 event = Event .model_validate (event )
11891223 await session_service .append_event (
1190- session = session ,
1224+ session = session_obj ,
11911225 event = event ,
11921226 )
11931227
0 commit comments