Resolve a Raxol.Agent.ExecutorConfig to a concrete backend module + options.
This is the explicit replacement for Raxol.Agent.Backend.HTTP's implicit
base_url substring detection: a named harness maps to a backend module and a
set of default options (provider hint, base URL), which are merged with the
config's own model/auth/opts.
Native CLI harnesses (:claude_native, :codex, :cursor) are reserved for
the future "vendor owns the loop" path and currently resolve to an error.
Summary
Functions
Resolve an executor config to {:ok, backend_module, backend_opts}.
List the harness atoms this selector can resolve to a backend.
Functions
@spec select(Raxol.Agent.ExecutorConfig.t()) :: {:ok, module(), keyword()} | {:error, term()}
Resolve an executor config to {:ok, backend_module, backend_opts}.
The returned backend_opts are the harness defaults merged with the config's
flattened model/auth/opts (config values win on conflict). Returns
{:error, {:harness_not_implemented, harness}} for reserved native harnesses
and {:error, {:unknown_harness, harness}} otherwise.
@spec supported_harnesses() :: [Raxol.Agent.ExecutorConfig.harness()]
List the harness atoms this selector can resolve to a backend.