MingaAgent.ProviderRegistry (Minga v0.1.0)

Copy Markdown View Source

Source-owned registry for agent provider declarations.

The registry resolves provider ids to implementation modules while core session code keeps ownership of sessions, credentials, retries, costs, events, and cleanup. Sources may replace their own provider ids during reload, but cross-source duplicate ids fail deterministically.

Summary

Types

Registration failure reason.

Provider registry server.

Source that owns provider declarations.

Functions

Lists all registered provider entries.

Returns a specification to start this module under a supervisor.

Disables a provider for new sessions.

Enables a provider for new sessions.

Looks up a provider regardless of enabled state.

Looks up an enabled provider by id.

Registers or replaces a provider spec.

Starts the provider registry.

Removes every provider contributed by a source.

Types

register_error()

@type register_error() ::
  {:duplicate_provider_id, String.t(), existing_source :: source(),
   attempted_source :: source()}
  | {:invalid_spec, term()}

Registration failure reason.

server()

@type server() :: GenServer.server()

Provider registry server.

source()

@type source() :: MingaAgent.Provider.Spec.source()

Source that owns provider declarations.

state()

@type state() :: %{required(String.t()) => MingaAgent.ProviderRegistry.Entry.t()}

Functions

all()

Lists all registered provider entries.

all(server)

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

disable(id)

@spec disable(String.t()) :: :ok | {:error, :not_found}

Disables a provider for new sessions.

disable(server, id)

@spec disable(server(), String.t()) :: :ok | {:error, :not_found}

enable(id)

@spec enable(String.t()) :: :ok | {:error, :not_found}

Enables a provider for new sessions.

enable(server, id)

@spec enable(server(), String.t()) :: :ok | {:error, :not_found}

get(id)

@spec get(String.t()) ::
  {:ok, MingaAgent.ProviderRegistry.Entry.t()} | {:error, :not_found}

Looks up a provider regardless of enabled state.

get(server, id)

@spec get(server(), String.t()) ::
  {:ok, MingaAgent.ProviderRegistry.Entry.t()} | {:error, :not_found}

lookup(id)

@spec lookup(String.t()) ::
  {:ok, MingaAgent.ProviderRegistry.Entry.t()}
  | {:error, :not_found | :disabled}

Looks up an enabled provider by id.

lookup(server, id)

@spec lookup(server(), String.t()) ::
  {:ok, MingaAgent.ProviderRegistry.Entry.t()}
  | {:error, :not_found | :disabled}

register(spec)

@spec register(MingaAgent.Provider.Spec.t() | keyword() | map()) ::
  :ok | {:error, register_error()}

Registers or replaces a provider spec.

register(server, spec)

@spec register(server(), MingaAgent.Provider.Spec.t() | keyword() | map()) ::
  :ok | {:error, register_error()}

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()

Starts the provider registry.

unregister_source(source)

@spec unregister_source(source()) :: :ok

Removes every provider contributed by a source.

unregister_source(server, source)

@spec unregister_source(server(), source()) :: :ok