Class: Google::ADK::InMemorySessionService
- Inherits:
-
BaseSessionService
- Object
- BaseSessionService
- Google::ADK::InMemorySessionService
- Defined in:
- lib/google/adk/session.rb
Overview
In-memory session service for development/testing
Instance Method Summary collapse
-
#append_event(app_name:, user_id:, session_id:, event:) ⇒ Session?
Append event to session.
-
#create_session(app_name:, user_id:, initial_state: nil) ⇒ Session
Create a new session.
-
#delete_session(app_name:, user_id:, session_id:) ⇒ Boolean
Delete a session.
-
#get_app_state(app_name:) ⇒ Hash
Get app state.
-
#get_session(app_name:, user_id:, session_id:) ⇒ Session?
Get a session.
-
#get_user_state(app_name:, user_id:) ⇒ Hash
Get user state.
-
#initialize ⇒ InMemorySessionService
constructor
A new instance of InMemorySessionService.
-
#list_sessions(app_name:, user_id:) ⇒ Array<Session>
List sessions for a user.
-
#update_app_state(app_name:, state_updates:) ⇒ Hash
Update app state.
-
#update_session(app_name:, user_id:, session_id:, state_updates:) ⇒ Session?
Update session state.
-
#update_user_state(app_name:, user_id:, state_updates:) ⇒ Hash
Update user state.
Constructor Details
#initialize ⇒ InMemorySessionService
125 126 127 128 129 130 |
# File 'lib/google/adk/session.rb', line 125 def initialize # Structure: { app_name => { user_id => { session_id => session } } } @sessions = {} @user_state = {} @app_state = {} end |
Instance Method Details
#append_event(app_name:, user_id:, session_id:, event:) ⇒ Session?
Append event to session
187 188 189 190 191 192 193 194 |
# File 'lib/google/adk/session.rb', line 187 def append_event(app_name:, user_id:, session_id:, event:) session = get_session(app_name: app_name, user_id: user_id, session_id: session_id) return nil unless session session.events << event session.last_update_time = Time.now session end |
#create_session(app_name:, user_id:, initial_state: nil) ⇒ Session
Create a new session
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/google/adk/session.rb', line 138 def create_session(app_name:, user_id:, initial_state: nil) session = Session.new( id: "session-#{SecureRandom.uuid}", app_name: app_name, user_id: user_id, state: initial_state || {} ) # Ensure nested structure exists @sessions[app_name] ||= {} @sessions[app_name][user_id] ||= {} @sessions[app_name][user_id][session.id] = session session end |
#delete_session(app_name:, user_id:, session_id:) ⇒ Boolean
Delete a session
202 203 204 205 206 207 |
# File 'lib/google/adk/session.rb', line 202 def delete_session(app_name:, user_id:, session_id:) return false unless @sessions.dig(app_name, user_id, session_id) @sessions[app_name][user_id].delete(session_id) true end |
#get_app_state(app_name:) ⇒ Hash
Get app state
246 247 248 |
# File 'lib/google/adk/session.rb', line 246 def get_app_state(app_name:) @app_state[app_name] || {} end |
#get_session(app_name:, user_id:, session_id:) ⇒ Session?
Get a session
160 161 162 |
# File 'lib/google/adk/session.rb', line 160 def get_session(app_name:, user_id:, session_id:) @sessions.dig(app_name, user_id, session_id) end |
#get_user_state(app_name:, user_id:) ⇒ Hash
Get user state
226 227 228 |
# File 'lib/google/adk/session.rb', line 226 def get_user_state(app_name:, user_id:) @user_state.dig(app_name, user_id) || {} end |
#list_sessions(app_name:, user_id:) ⇒ Array<Session>
List sessions for a user
214 215 216 217 218 219 |
# File 'lib/google/adk/session.rb', line 214 def list_sessions(app_name:, user_id:) sessions_hash = @sessions.dig(app_name, user_id) return [] unless sessions_hash sessions_hash.values end |
#update_app_state(app_name:, state_updates:) ⇒ Hash
Update app state
255 256 257 258 |
# File 'lib/google/adk/session.rb', line 255 def update_app_state(app_name:, state_updates:) @app_state[app_name] ||= {} @app_state[app_name].merge!(state_updates) end |
#update_session(app_name:, user_id:, session_id:, state_updates:) ⇒ Session?
Update session state
171 172 173 174 175 176 177 178 |
# File 'lib/google/adk/session.rb', line 171 def update_session(app_name:, user_id:, session_id:, state_updates:) session = get_session(app_name: app_name, user_id: user_id, session_id: session_id) return nil unless session session.state.merge!(state_updates) session.last_update_time = Time.now session end |
#update_user_state(app_name:, user_id:, state_updates:) ⇒ Hash
Update user state
236 237 238 239 240 |
# File 'lib/google/adk/session.rb', line 236 def update_user_state(app_name:, user_id:, state_updates:) @user_state[app_name] ||= {} @user_state[app_name][user_id] ||= {} @user_state[app_name][user_id].merge!(state_updates) end |