Public routing extension API.
This domain provides deterministic provider selection with health-aware failover, fully owned by extension processes.
Summary
Functions
@spec health_snapshot(pid()) :: {:ok, %{ required(ASM.Extensions.Routing.Router.provider_id()) => ASM.Extensions.Routing.Router.health_status() }}
@spec provider_health(pid(), ASM.Extensions.Routing.Router.provider_id()) :: {:ok, ASM.Extensions.Routing.Router.health_status()} | {:error, ASM.Error.t()}
@spec report_failure( pid(), ASM.Extensions.Routing.Router.selection() | ASM.Extensions.Routing.Router.provider_id(), term() ) :: :ok | {:error, ASM.Error.t()}
@spec report_result( pid(), ASM.Extensions.Routing.Router.selection() | ASM.Extensions.Routing.Router.provider_id(), term() ) :: :ok | {:error, ASM.Error.t()}
@spec report_success( pid(), ASM.Extensions.Routing.Router.selection() | ASM.Extensions.Routing.Router.provider_id() ) :: :ok | {:error, ASM.Error.t()}
@spec select_provider( pid(), keyword() ) :: {:ok, ASM.Extensions.Routing.Router.selection()} | {:error, ASM.Error.t()}
@spec start_router(keyword()) :: GenServer.on_start()