Port implemented by optional action-planning libraries.
A planner may inspect an LLM reply and return provider-neutral
Spectre.Action values. It cannot execute providers or mutate Agent state.
Summary
Types
@type response() :: %{reply_text: String.t(), actions: [Spectre.Action.t() | map()]}
Callbacks
@callback clean_reply(String.t(), Spectre.Context.t() | map(), keyword()) :: String.t()
@callback plan(String.t(), Spectre.Context.t() | map(), keyword()) :: {:ok, Spectre.Action.t() | map()} | {:error, term()}