Resolves symbiont names to running process handlers.
This module handles the on-demand starting of GenServer workers based on blueprints registered in the Catalog. It manages the lifecycle including TTL-based auto-shutdown and scope isolation.
Resolution Order
- Check if a process is already running (via Registry)
- Look up the blueprint in the scoped catalog (if scope_id provided)
- Fall back to global catalog (unless strict_mode is enabled)
- Start the worker via DynamicSupervisor
Strict Mode
When strict_mode: true is passed, the resolver will NOT fall back
to the global catalog if the blueprint isn't found in the scoped catalog.
This is useful for multi-tenant applications requiring strong isolation.
Summary
Functions
Returns true if the given reference points to a live process.
Resolves a symbiont name to a handler.
Functions
@spec alive?(OrchidSymbiont.Handler.t()) :: boolean()
Returns true if the given reference points to a live process.
@spec resolve(binary() | nil, term(), keyword()) :: {:ok, OrchidSymbiont.Handler.t()} | {:error, term()}
Resolves a symbiont name to a handler.
If the worker is already running, returns the existing handler. Otherwise, looks up the blueprint and starts the worker on-demand.
Options
:strict_mode- Whentrue, disables catalog fallback to global. Returns error if blueprint not found in scoped catalog.