Minga.Foundation.Supervisor (Minga v0.1.0)

Copy Markdown View Source

Supervises foundational infrastructure that the rest of the application depends on.

Uses rest_for_one because Events (an Elixir Registry) is the pub/sub bus for the entire application. If Events crashes under one_for_one, every subscriber silently loses its registration with no error and no crash. rest_for_one ensures all children after Events re-initialize and re-subscribe.

Children

Foundation.Supervisor (rest_for_one)
 Minga.Language.Registry        ETS, language definitions
 Minga.Extensions.LanguagePacks Bundled language catalog loader
 Minga.Extensions.ThemePacks    Bundled theme pack loader
 Minga.Tool.Recipe.Registry     ETS, tool install recipes
 Minga.Extensions.RecipePacks   Bundled recipe pack loader
 Minga.Events                   Registry(:duplicate), pub/sub bus
 Minga.Config.Options           GenServer, typed options
 Minga.Keymap.Active            Active keymap state
 Minga.Config.Hooks             Lifecycle hooks
 Minga.Config.Advice            Before/after command advice (ETS)
 Minga.Config.ModelineSegments  Custom modeline segments (ETS)
 Minga.Extension.Overlay        Extension overlay registry (ETS)
 Minga.Extension.Panel          Extension panel registry (ETS)
 Minga.Extension.Badge          Extension badge registry (ETS)
 MingaAgent.Tool.Registry       Agent tool specs (ETS)
 MingaAgent.ToolPacks.ReadOnly  Bundled read-only agent tools
 MingaAgent.ToolPacks.LSP       Bundled LSP agent tools
 Minga.Language.Filetype.Registry Filetype detection

Language.Registry is first because it owns the ETS table. Bundled packs (language, theme, recipe) start next so consumers see the default catalogs before services, LSP, syntax highlighting, or filetype detection query them. Recipe.Registry precedes RecipePacks and Tool.Registry precedes ToolPacks so the ETS tables exist before packs register into them. Events follows so everything after it re-subscribes on Events restart.

Summary

Functions

Returns a specification to start this module under a supervisor.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

start_link(opts \\ [])

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