Metadata-Version: 2.4
Name: progress-memory-google-adk
Version: 0.1.0
Summary: Google ADK integration for the Progress Memory SDK
Author: Progress Software Corporation
License: Copyright © Progress Software Corporation
License-File: notices.txt
Requires-Python: >=3.11
Requires-Dist: google-adk>=2.0
Requires-Dist: jinja2>=3.1.5
Requires-Dist: progress-memory>=0.1.0
Requires-Dist: pygments>=2.20.0
Requires-Dist: pyopenssl>=26.3.0
Requires-Dist: urllib3>=2.2.2
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# progress-memory-google-adk

Google ADK integration for the [Progress Memory](https://www.progress.com) SDK.

Implements `BaseMemoryService` so that ADK agents automatically recall and save
memories through Progress Memory — no manual wiring required.

## Quick start

```python
from google.adk.agents import LlmAgent
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.adk.tools import load_memory
from google.genai.types import Content, Part
from progress_memory import ProgressMemoryClient, ProgressMemoryConfig
from progress_memory_google_adk import ProgressMemoryADKService

config = ProgressMemoryConfig.from_env()

async with ProgressMemoryClient(config) as memory_client:
    memory_service = ProgressMemoryADKService(
        client=memory_client, agent_id="my-agent"
    )

    agent = LlmAgent(
        name="assistant",
        model="gemini-2.0-flash",
        instruction="You are helpful.",
        tools=[load_memory],
        after_agent_callback=memory_service.after_agent_callback,
    )

    runner = Runner(
        agent=agent,
        app_name="my_app",
        session_service=InMemorySessionService(),
        memory_service=memory_service,
    )
```

## How it works

1. User sends a message via `runner.run_async()`.
2. Agent calls the built-in `load_memory` tool → `search_memory()` is invoked.
3. Agent processes memories and responds.
4. `after_agent_callback` fires → `add_events_to_memory()` saves only the new event delta for this turn.

**Important**: reuse the same session across turns; the service tracks per-session offsets so only new events are sent to Progress Memory on each save.
