Skip to main content

CHANGELOG.md

# 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`.