google / google/adk-python

Feature Request: Declarative initial session state for `adk web`

Offen
#4,961 1 Kommentar 0 Reaktionen 1 zugewiesene Person Beansprucht von @GWeale Auf GitHub ansehen
needs review web
Vorherrschende Sprache
Python
Sterne
21.5k
Forks
4k
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
37

Beschreibung

## 🔴 Required Information

### Is your feature request related to a specific problem?

`adk run` supports pre-loading session state via the `--replay` option with a JSON file, but `adk web` has no equivalent mechanism. When iteratively developing and testing agents that depend on session state, I have to either manually enter state through the Web UI on every new session, or write custom injection logic in callbacks. A simpler, declarative option would improve the development experience.

Related discussion: https://github.com/google/adk-python/discussions/2753

### Describe the Solution You'd Like

Allow developers to place an `initial_state.json` file in the agent directory. When `adk web` creates a new session, it automatically merges the file's contents into the session state.

```
my_agent/
├── __init__.py
├── agent.py
└── initial_state.json # new
```

```json
{
"city": "New York",
"time": "10:30"
}
```

- **JSON format** — consistent with `adk run --replay`
- **Client state takes precedence** — values passed from the client overwrite file-based defaults
- **Zero impact when absent** — if the file doesn't exist, behavior is unchanged

### Impact on your work

This would streamline my iterative development workflow. Every time I create a new session in `adk web`, I currently re-enter the same state values manually. Not critical, but it would be a nice quality-of-life improvement.

### Willingness to contribute

Yes — happy to open a PR if this direction looks reasonable.

---

## 🟡 Recommended Information

### Describe Alternatives You've Considered

- **Manual entry via Web UI** — works, but repetitive across sessions
- **`before_agent_callback`** — requires boilerplate code that isn't part of the agent's core logic

### Proposed API / Implementation

- Add a `_load_initial_state()` method to `AdkWebServer` that reads `{agents_dir}/{app_name}/initial_state.json` if present, otherwise returns an empty dict
- Merge into `_create_session()` with client state taking precedence: `{**file_state, **(client_state or {})}`

### Additional Context

N/A

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.