All notable changes to req_managed_agents_host are documented here.
v0.2.0
- Transcript persistence: providers that emit
SessionResult.transcript(req_managed_agents >= 0.10, e.g.Providers.Local) get it stored under a sibling{:transcript, external_id}Store key and re-injected ashistory:on reattach — local conversations now survive process crashes, idle-detach, and full BEAM restarts. - Server-held providers (Claude Managed Agents, AgentCore) are unaffected: no transcript emitted, nothing stored, opts unchanged.
- Requires
{:req_managed_agents, "~> 0.10"}.
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 viaReqManagedAgents.Session.run/2, and returns the RMASessionResult.ReqManagedAgents.Host.Config— validated, struct-first host configuration (:provider,:handler,:storerequired; optional:agent/:environmenthandles,:idle_timeout_ms,:timeout_ms,:metadata).ReqManagedAgents.Host.Storebehaviour, 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 durableexternal_id -> upstream identitymap that backs reattach and idle-detach.ReqManagedAgents.Host.SessionServer— a per-external-idGenServerdriving one turn at a time. Idle-detaches afteridle_timeout_ms; its child spec isrestart: :temporary, so both idle-detach and a crash simply end the process — the nextsend_message/3re-creates it and reattaches through theLocatorrather than being auto-restarted in place.ReqManagedAgents.Host.SessionSupervisor— aDynamicSupervisorholding one live session per external id; killing one server never affects a sibling.- An OTP application (the
mod:entry inmix.exs) starts the sessionRegistryand theSessionSupervisor.