CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.0.0-rc.0] - 2026-02-22

### Added

- `Jido.AI.Plugins.Chat` as the conversational anchor plugin with built-in tool-calling paths.
- New strategy capability plugins:
  - `Jido.AI.Plugins.Reasoning.ChainOfThought`
  - `Jido.AI.Plugins.Reasoning.TreeOfThoughts`
  - `Jido.AI.Plugins.Reasoning.GraphOfThoughts`
  - `Jido.AI.Plugins.Reasoning.TRM`
  - `Jido.AI.Plugins.Reasoning.Adaptive`
- `Jido.AI.Actions.Reasoning.RunStrategy` for isolated strategy execution (`:cot | :tot | :got | :trm | :adaptive`).
- Internal dedicated strategy runner agents for plugin-driven strategy execution.
- Shared strategy module-action fallback execution in `Jido.AI.Reasoning.Helpers`.
- Migration guide for plugin/signal changes: `guides/user/migration_plugins_and_signals_v3.md`.

### Changed

- Published the first 2.0.0 release-candidate line for Hex (`2.0.0-rc.0`)
- Aligned ecosystem dependency ranges to stable releases: `jido ~> 2.0`, `jido_action ~> 2.0`
- Updated dev/test smoke dependency to `jido_browser ~> 1.0`
- Strategy runtimes now execute plugin-routed `Jido.Action` module instructions instead of no-oping unknown module actions.
- Plugin-routed action context is standardized to include `state`, `agent`, and `plugin_state`.
- LLM/tool-calling actions now consistently read mounted defaults from context/plugin state.
- `Jido.AI.Actions.ToolCalling.CallWithTools` and `ListTools` now resolve tools from broader fallback context sources.
- Public docs updated to the new plugin taxonomy and strategy-run capability model.

### Removed

- Public plugin modules:
  - `Jido.AI.Plugins.LLM`
  - `Jido.AI.Plugins.ToolCalling`
  - `Jido.AI.Plugins.Reasoning`
- Legacy public plugin signal contracts tied to those modules (`llm.*`, `tool.*`, and `reasoning.analyze|infer|explain` plugin routes).

### Migration Notes

- This is a hard-replace breaking release for the plugin surface (no compatibility adapters).
- Replace removed plugins/signals using:
  - `guides/user/migration_plugins_and_signals_v3.md`

## [2.0.0] - Previous

### Added

- Complete rewrite with clean architecture
- Splode-based error handling via `Jido.AI.Error`
- Zoi schema validation support
- Integration with ReqLLM for LLM provider abstraction
- Integration with jido_action for composable AI actions

### Changed

- **Breaking**: Complete API redesign for v2
- Module namespace changed from `JidoAi` to `Jido.AI`

<!-- changelog -->

## [v2.1.0](https://github.com/agentjido/jido_ai/compare/v2.0.0...v2.1.0) (2026-03-29)




### Features:

* request: enrich completed request metadata (#233) by mikehostetler

* request: enrich completed request metadata by mikehostetler

* react: add queued mid-run steering controls (#225) by mikehostetler

* react: add mid-run steering controls by mikehostetler

* split out reasoning lifecycle parity (#231) by mikehostetler

* split out reasoning lifecycle parity by mikehostetler

* split out AI tool error contract (#230) by mikehostetler

* split out AI observability core (#229) by mikehostetler

* split out AI observability core by mikehostetler

* context: carry refs through context entries and projection (#213) by Julian Scheid

* context: carry refs through context entries and projection by Julian Scheid

* react: allow callers to attach extra refs to thread entries by mikehostetler

* react: allow callers to attach extra refs to thread entries (#211) by Julian Scheid

* react: allow callers to attach extra refs to thread entries by Julian Scheid

### Bug Fixes:

* preserve formatter imports during jido_ai.install (#237) by mikehostetler

* stop importing jido_ai formatter config by mikehostetler

* avoid dialyzer warnings in model input by mikehostetler

* adaptive: preserve compatibility strings for failures (#234) by mikehostetler

* request: normalize compatibility last_answer by mikehostetler

* strategy: preserve raw error terms in snapshot result (#223) by Julian Scheid

* strategy: preserve raw error terms in snapshot result by Julian Scheid

* cli: preserve compatibility strings for raw failures by Julian Scheid

* react: harden steering queue lifecycle by mikehostetler

* react: align queue error types by mikehostetler

* react: preserve input injected compatibility events by mikehostetler

* remove dead lifecycle telemetry fallback by mikehostetler

* unblock split PR CI by mikehostetler

* tool_adapter: ensure modules are loaded before validating (#226) by Philip Munksgaard

* pass details as keyword to `execution_error` (#214) by Julian Scheid

* pass details as keyword to execution_error by Julian Scheid

* examples: preserve action error details maps by Julian Scheid

* context: preserve refs during replay and restore by Julian Scheid

* preserve multimodal tool result content parts (#209) by mikehostetler

* agent: accept full ReqLLM model inputs by mikehostetler

* preserve multimodal tool result content parts by mikehostetler

* react: preserve extra thread refs by mikehostetler

* context: normalize restored multimodal tool content by mikehostetler

* react: preserve extra thread refs by Julian Scheid

* agent: accept full ReqLLM model inputs (#206) by mikehostetler

* format mix.exs for CI by mikehostetler

### Refactoring:

* react: tighten queued control boundaries (#235) by mikehostetler

* remove ModelInput helper (#238) by mikehostetler

* remove ModelInput helper by mikehostetler

* react: clarify queued steering semantics by mikehostetler

* cli: codify non-interactive mix task contract (#205) by mikehostetler

## [2.0.0](https://github.com/agentjido/jido_ai/compare/v2.0.0-rc.0...2.0.0) (2026-03-15)
### Breaking Changes:

* remove Jido.AI.Thread compatibility shim by dbhowmick

* remove public Jido.AI.set_context API by dbhowmick

* react: project context lifecycle onto core thread by dbhowmick



### Features:

* react: add request-scoped tool controls (#200) by mikehostetler

* react: add request-scoped tool controls by mikehostetler

* add Igniter installer for automated setup (#169) by Nickcom4

* add Igniter installer for automated package setup by Nickcom4

* ai: add prompt builder and context lifecycle helpers (#188) by austin macciola

* react: add set_thread for conversation session resumption (#184) by dbhowmick

* react: add set_thread for conversation session resumption by dbhowmick

* add effect policy gating and runtime tool-effect application (#172) by mikehostetler

* reasoning: add effect policy and runtime tool-effect application by mikehostetler

### Bug Fixes:

* react: resolve lint issues by mikehostetler

* unify ReAct stream liveness and reasoning continuity (#196) by mikehostetler

* unify react stream liveness and reasoning continuity by mikehostetler

* use req_llm keepalive callbacks by mikehostetler

* test: align rebased stream timeout option names by mikehostetler

* react: remove unreachable assistant context clause by mikehostetler

* examples: restore weather tool compatibility by mikehostetler

* add LICENSE file (#194) by mikehostetler

* preserve OpenAI Responses continuation across tool loops (#192) by mikehostetler

* preserve openai responses tool continuation by mikehostetler

* preserve responses continuation in tool loops by mikehostetler

* align react runner with quality checks by mikehostetler

* raise and forward react max_tokens defaults by mikehostetler

* install jido as dependency via installs field by Nickcom4

* installer: satisfy doctor docs coverage by Nickcom4

* react: defer thread replacement until terminal run state by dbhowmick

* react: resolve dialyzer failures in context ops by dbhowmick

* forward streaming option from agent macro to strategy config (#186) by Edgar Gomes

* forward streaming option from agent macro to strategy config by Edgar Gomes

* break compile-connected ReAct cycle from xref issue #181 (#182) by mikehostetler

* react: break compile-connected ReAct dependency cycle by mikehostetler

* add runtime state snapshots to tool execution contexts (#180) by mikehostetler

* reasoning: inject runtime state snapshots into tool contexts by mikehostetler

* react: normalize standalone tool state snapshot aliases by mikehostetler

* react: remove unreachable snapshot fallback for dialyzer by mikehostetler

* harden Thread inspect for truncated telemetry payloads (#178) by mikehostetler

* effects: harden policy parsing and ToT policy wiring by mikehostetler

* dialyzer: remove unreachable tuple branches by mikehostetler

* reasoning: enforce deterministic tool effect ordering by mikehostetler

* dialyzer: remove unreachable fallback in ToT ordering helper by mikehostetler

* agent: preserve literal option evaluation after rebase by mikehostetler

* effects: enforce constraint normalization and ToT fallback ordering by mikehostetler

* reasoning: normalize canonical llm_result envelopes by mikehostetler

* react: forward llm opts and http options end-to-end (#171) by mikehostetler

* react: forward llm opts and http options end-to-end by mikehostetler

* react: harden llm option normalization and provider option translation by mikehostetler

* react: resolve dialyzer unreachable clauses in option mapping by mikehostetler

### Refactoring:

* examples: move examples to top-level folder (#190) by mikehostetler

* examples: move examples into standalone project by mikehostetler

* examples: keep examples in top-level folder by mikehostetler

* ai: adopt Context API and deprecate Thread shim by dbhowmick

* react: remove set_thread compatibility surface by dbhowmick

* reasoning: remove internal agent_state snapshot alias by mikehostetler