# Changelog
All notable changes to `req_managed_agents_host` are documented here.
## v0.1.0
Initial release: a durable, single-node session host over `req_managed_agents`.
### Added
- `ReqManagedAgents.Host.send_message/3` — the whole public surface. Finds, starts, or
reattaches the live session for a caller-supplied external id, runs one turn to a terminal
via `ReqManagedAgents.Session.run/2`, and returns the RMA `SessionResult`.
- `ReqManagedAgents.Host.Config` — validated, struct-first host configuration
(`:provider`, `:handler`, `:store` required; optional `:agent`/`:environment` handles,
`:idle_timeout_ms`, `:timeout_ms`, `:metadata`).
- `ReqManagedAgents.Host.Store` behaviour, with two implementations:
- `Store.ETS` — process-local, in-memory; gone when its owner process stops.
- `Store.DETS` — file-backed; the locator survives a full BEAM restart.
- `ReqManagedAgents.Host.Locator` (+ `Locator.Record`) — the durable
`external_id -> upstream identity` map that backs reattach and idle-detach.
- `ReqManagedAgents.Host.SessionServer` — a per-external-id `GenServer` driving one turn at a
time. Idle-detaches after `idle_timeout_ms`; its child spec is `restart: :temporary`, so
both idle-detach and a crash simply end the process — the next `send_message/3` re-creates
it and reattaches through the `Locator` rather than being auto-restarted in place.
- `ReqManagedAgents.Host.SessionSupervisor` — a `DynamicSupervisor` holding one live session
per external id; killing one server never affects a sibling.
- An OTP application (the `mod:` entry in `mix.exs`) starts the session `Registry` and
the `SessionSupervisor`.