mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
feature/auto-create-new-session Merge https://github.com/google/adk-python/pull/4072 **Please ensure you have read the [contribution guide](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) before creating a pull request.** ### Link to Issue or Description of Change **2. Or, if no issue exists, describe the change:** **Problem:** When building frontend applications with ADK, there's a limitation where frontends cannot always guarantee that `create_session` is called before initiating a conversation. This creates friction in the user experience because: - Users may refresh the page or navigate directly to a conversation URL with a specific session_id - Frontend state management may lose track of whether a session was already created - Mobile apps or single-page applications have complex lifecycle management where ensuring `create_session` is called first adds unnecessary complexity - This forces developers to implement additional logic to check session existence before every conversation Currently, if `get_session` is called with a non-existent session_id, it returns `None`, requiring the frontend to explicitly handle this case and call `create_session` separately. **Solution:** Modified the `get_session` method in `DatabaseSessionService` to automatically create a session if it doesn't exist in the database. This "get or create" pattern is common in many frameworks and provides a more developer-friendly API. The implementation: 1. Attempts to fetch the session from the database 2. If the session doesn't exist (returns `None`), automatically calls `create_session` with the provided parameters 3. Retrieves and returns the newly created session 4. Maintains backward compatibility - existing code continues to work without changes This allows frontends to simply call `get_session` with a session_id and be confident that the session will be available, regardless of whether it was previously created. **Benefits:** - Simplifies frontend integration by removing the need to track session creation state - Reduces API calls (no need to check existence before calling get_session) - Follows the principle of least surprise - getting a session with an ID should work reliably - No breaking changes to existing code that checks for `None` return values ### Testing Plan **Unit Tests:** - [x] I have added or updated unit tests for my change. - [x] All unit tests pass locally. **pytest results:** COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/4072 from lwangverizon:feature/auto-create-new-session 5475c6ae91d12332598d521302736eb1db79a8be PiperOrigin-RevId: 856019482