v0.8.0
What's Changed
- docs(changelog): stamp 0.8.0
- build: gate ruff format in make lint and align scope with CI
- docs(changelog): document the commits since v0.7.2 under Unreleased
- refactor(ai): dedupe tool-loop context setup into _ToolLoopContext.for_loop
- refactor(core): move regenerate_response into its own RegenerateMixin
- feat(tools): per-turn allowed-names accessor + room-scoped eviction
- fix(ai): route to the tool loop when a config_provider is set
- feat(tools): expose per-call room via current_tool_room_id()
- feat(ai): bounded in-loop retry when a tool round ends with no final text
- feat(inbound): add regenerate_response primitive
- feat(inbound): InboundMessage.visibility — deliver without triggering the agent
- feat(telegram): send inline keyboards from RichContent
- fix(core): run AFTER_BROADCAST hooks outside the room lock
- docs: align type-check references with ty
- fix(core): enforce RFC inbound/direct-injection pipeline invariants
- feat(channels): skills_in_prompt flag — let hosts own the skills manifest
Full Changelog: v0.7.2...v0.8.0