Raxol.Agent.Backend.Selector (Raxol Agent v2.6.0)

Copy Markdown View Source

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

select(config)

@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.

supported_harnesses()

@spec supported_harnesses() :: [Raxol.Agent.ExecutorConfig.harness()]

List the harness atoms this selector can resolve to a backend.