Skip to content

v0.2.0

Choose a tag to compare

@skundu42 skundu42 released this 14 May 11:57
· 17 commits to main since this release

Session State & Storage

  • Added scope-routed session state handling for app:, user:, and temp: keys.
  • SessionService::create_session(state: Some(_)) now partitions state by scope automatically.
  • Session.state now exposes a merged overlay of app, user, and session state.
  • InMemorySessionService now includes dedicated:
    • app_state
    • user_state
      stores.
  • SqlSessionService now includes:
    • app_state table
    • user_state table
      for both PostgreSQL and SQLite backends.
  • Added new public helper:
    State::partition_by_scope(&delta)

Auth Resume & Function Calls

  • Added deterministic auth-resume flow after OAuth/credential consent.
  • Gemini function calls without IDs now receive synthesized stable IDs:
    adk-fc-<uuid>
    
  • AuthPreprocessor now rejects empty or missing function_call_id values for:
    adk_request_credential
    

OpenAPI Tooling

  • Expanded OpenAPI REST tool support for:
    • request bodies
    • parameter styles
    • security scheme binding
    • richer spec parsing
    • operation parameter resolution

Concurrency & State Consistency Fixes

  • Fixed TOCTOU race in in-memory app_slot() / user_slot().
  • Fixed concurrent state-write clobbering in PostgreSQL and SQLite backends.
  • Added state merge locking using:
    • SELECT ... FOR UPDATE (Postgres)
    • BEGIN IMMEDIATE (SQLite)
  • Fixed app/user scope leakage across sessions.
  • Fixed Gemini auth-resume failures caused by missing function-call IDs.
  • Fixed multiple runner/agent flow ordering and persistence issues.

Database Changes

Added new tables:

app_state(app_name, key, value)
user_state(app_name, user_id, key, value)

Updated:

  • 0001_init.sql for SQLite
  • 0001_init.sql for PostgreSQL

Cargo Features

No changes to storage backend feature flags:

  • sqlite
  • postgres