Migration Guide: Plugins And Signals (v2 -> v3)

Copy Markdown View Source

This guide maps the removed v2 public plugin surface to the v3 replacement.

Breaking Change Summary

Removed public plugins:

  • Jido.AI.Plugins.LLM
  • Jido.AI.Plugins.ToolCalling
  • Jido.AI.Plugins.Reasoning

New public plugins:

Jido.AI.Plugins.TaskSupervisor remains internal runtime infrastructure, not a recommended public capability plugin.

Plugin Module Mapping

  • Jido.AI.Plugins.LLM -> Jido.AI.Plugins.Chat
  • Jido.AI.Plugins.ToolCalling -> Jido.AI.Plugins.Chat
  • Jido.AI.Plugins.Reasoning -> Strategy plugins (ChainOfDraft, ChainOfThought, AlgorithmOfThoughts, TreeOfThoughts, GraphOfThoughts, TRM, Adaptive)

Signal Mapping

Legacy -> New:

  • llm.chat -> chat.simple
  • llm.complete -> chat.complete
  • llm.embed -> chat.embed
  • llm.generate_object -> chat.generate_object
  • tool.call -> chat.message
  • tool.execute -> chat.execute_tool
  • tool.list -> chat.list_tools
  • reasoning.analyze -> use Jido.AI.Actions.Reasoning.Analyze directly
  • reasoning.explain -> use Jido.AI.Actions.Reasoning.Explain directly
  • reasoning.infer -> use Jido.AI.Actions.Reasoning.Infer directly
  • strategy execution (new):
    • reasoning.cod.run
    • reasoning.cot.run
    • reasoning.aot.run
    • reasoning.tot.run
    • reasoning.got.run
    • reasoning.trm.run
    • reasoning.adaptive.run

Action Mapping

Migration Steps

  1. Replace removed plugin modules in agent definitions.
  2. Update signal emitters to new namespaces.
  3. If you need explicit strategy execution, emit reasoning.*.run or call RunStrategy directly.
  4. Move any LLM + tool defaults into Jido.AI.Plugins.Chat config (auto_execute, tool policy, defaults).
  5. Run your integration tests against plugin routes and signal handlers.

Example

Before:

plugins: [
  {Jido.AI.Plugins.LLM, %{default_model: :fast}},
  {Jido.AI.Plugins.ToolCalling, %{auto_execute: true}}
]

After:

plugins: [
  {Jido.AI.Plugins.Chat, %{default_model: :fast, auto_execute: true}},
  {Jido.AI.Plugins.Reasoning.ChainOfThought, %{default_model: :reasoning}}
]