Repository navigation
v3.13.0
Added
- Two-tier data retention —
soft_purge_after(default 30 days) andhard_purge_after(default 365 days) config options with a newRetentionJobandrake ruby_llm_agents:purgetask. Soft pass destroysexecution_detailsandtool_executionswhile preserving execution records (and a truncatederror_messagein metadata) so error-rate trends survive the purge; hard pass destroys executions in batches with cascading deletes. Either tier can be set tonilto disable it - Searchable multi-select tenant filter — Executions page tenant filter now supports multi-select with a client-side search input.
_filter_dropdownpartial gains an opt-insearchable: trueflag; dropdown stays open while selecting and batches submissions on close - Routing
auto_delegate: false— Opt out of router auto-delegation to return a classification-onlyRoutingResultwithagent_classpopulated for manual dispatch (fixes #24) - Soft-purge execution UI — Banner on execution show page; detail-backed sections hide silently after purge; system config page surfaces both purge windows
Changed
- Bumped
ruby_llmdependency to>= 1.14.1 - Deprecated
retention_period— Now an alias forhard_purge_after - Dashboard override UI now renders for regular agents —
show.html.erbrendersconfig_<kind>for all agent kinds instead of skipping"agent" - Replaced internal-class mocks in specs — Image execution, reliability, builder, speaker, transcriber, and instrumentation specs now exercise real code paths; mocks retained only at external boundaries (LLM APIs, DB error injection, Rails cache edges)
Fixed
- Router stream block forwarding — Caller's stream block is now captured and forwarded to the delegated agent so streaming flows end-to-end (fixes #24)
- Failed image executions not persisted —
ImageOperationExecution#record_failed_executionpassederror_message:toExecution.create!, raisingActiveModel::UnknownAttributeErrorthat was silently swallowed. Split intoExecution.create!+execution.create_detail!(error_message:)to match the instrumentation middleware pattern - Audio player
response.digon String — AddedExecution#response_hashnormalizer that returns{}when the response is aString,Array, ornil; fixesundefined method 'dig' for Stringwhen agents write plain-text responses to the JSON column - Override reset button — Reset controls use
button_towithturbo_confirm; "reset all" moved outside the save-overrides form to stop submitting the outer PATCH
Full changelog: v3.12.0...v3.13.0