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__)
|
logger = logging.getLogger("google_adk." + __name__)
|
||||||
|
|
||||||
|
_BUILT_IN_SESSION_SERVICE_KEY = "__adk_built_in_session_service__"
|
||||||
|
|
||||||
|
|
||||||
def create_local_database_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 def _get_service(self, app_name: str) -> BaseSessionService:
|
||||||
async with self._service_lock:
|
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)
|
storage_name = self._app_name_to_dir.get(app_name, app_name)
|
||||||
service = self._services.get(storage_name)
|
service = self._services.get(storage_name)
|
||||||
if service is not None:
|
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()
|
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(
|
def test_create_local_database_session_service_returns_sqlite(
|
||||||
tmp_path: Path,
|
tmp_path: Path,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user