mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
fix: Built-in agents (names starting with "__") now use in-memory session storage instead of creating .adk folders in the agents directory
Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 845852695
This commit is contained in:
committed by
Copybara-Service
parent
c6f389d4bc
commit
e3bac1ab8c
@@ -34,6 +34,8 @@ from .dot_adk_folder import DotAdkFolder
|
||||
|
||||
logger = logging.getLogger("google_adk." + __name__)
|
||||
|
||||
_BUILT_IN_SESSION_SERVICE_KEY = "__adk_built_in_session_service__"
|
||||
|
||||
|
||||
def create_local_database_session_service(
|
||||
*,
|
||||
@@ -124,6 +126,16 @@ class PerAgentDatabaseSessionService(BaseSessionService):
|
||||
|
||||
async def _get_service(self, app_name: str) -> BaseSessionService:
|
||||
async with self._service_lock:
|
||||
if app_name.startswith("__"):
|
||||
service = self._services.get(_BUILT_IN_SESSION_SERVICE_KEY)
|
||||
if service is not None:
|
||||
return service
|
||||
service = create_local_database_session_service(
|
||||
base_dir=self._agents_root,
|
||||
)
|
||||
self._services[_BUILT_IN_SESSION_SERVICE_KEY] = service
|
||||
return service
|
||||
|
||||
storage_name = self._app_name_to_dir.get(app_name, app_name)
|
||||
service = self._services.get(storage_name)
|
||||
if service is not None:
|
||||
|
||||
@@ -72,6 +72,18 @@ async def test_per_agent_session_service_respects_app_name_alias(
|
||||
assert (tmp_path / folder_name / ".adk" / "session.db").exists()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_per_agent_session_service_routes_built_in_agents_to_root_dot_adk(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
service = PerAgentDatabaseSessionService(agents_root=tmp_path)
|
||||
|
||||
await service.create_session(app_name="__helper", user_id="user")
|
||||
|
||||
assert not (tmp_path / "__helper").exists()
|
||||
assert (tmp_path / ".adk" / "session.db").exists()
|
||||
|
||||
|
||||
def test_create_local_database_session_service_returns_sqlite(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user