A blueprint registry for symbiont workers.
Stores the module and startup arguments (blueprint) for each named symbiont. Acts as a lookup table that the Resolver uses to start workers on-demand.
Scope Support
Can be started globally or per-scope. When started with a scope_id,
the catalog is isolated to that scope and won't conflict with others.
Global Fallback
Scoped catalogs will fall back to the global catalog if a blueprint is not found locally, allowing DRY registration patterns.
Summary
Functions
Returns a specification to start this module under a supervisor.
Dumps all blueprints from the catalog.
Looks up a blueprint by key.
Registers a blueprint for a given key.
Restores the catalog state from a previously dumped map.
Starts the catalog agent.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
Dumps all blueprints from the catalog.
Looks up a blueprint by key.
Returns {:ok, value} if found, or :not_found if the key
doesn't exist in the catalog.
Registers a blueprint for a given key.
The value is typically a tuple {module, args} describing how to start
the worker.
Restores the catalog state from a previously dumped map.
@spec start_link(keyword()) :: Agent.on_start()
Starts the catalog agent.
If scope_id is provided, creates an isolated catalog for that scope.
Otherwise, starts the global catalog.