# `MingaAgent.Tool.BundledSources`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_agent/tool/bundled_sources.ex#L1)

Stable source identifiers and reserved names for bundled tool packs.

This module is metadata only. Core registry code can reserve names without depending on a concrete bundled pack implementation, and packs can use the same source identifiers when registering their specs.

# `source`

```elixir
@type source() :: {:bundle, :read_only_tools} | {:bundle, :lsp_tools}
```

Known bundled tool-pack source identifier.

# `known_source?`

```elixir
@spec known_source?(term()) :: boolean()
```

Returns true when the source is a known bundled tool-pack source.

# `lsp_source`

```elixir
@spec lsp_source() :: {:bundle, :lsp_tools}
```

Returns the bundled LSP tool pack source.

# `lsp_tool_names`

```elixir
@spec lsp_tool_names() :: [String.t()]
```

Returns the stable tool names owned by the bundled LSP pack.

# `read_only_source`

```elixir
@spec read_only_source() :: {:bundle, :read_only_tools}
```

Returns the bundled read-only tool pack source.

# `read_only_tool_names`

```elixir
@spec read_only_tool_names() :: [String.t()]
```

Returns the stable tool names owned by the bundled read-only pack.

# `reserved_names`

```elixir
@spec reserved_names() :: [String.t()]
```

Returns all bundled tool names that remain reserved even if their pack is disabled.

# `reserved_source_for`

```elixir
@spec reserved_source_for(String.t()) :: {:ok, source()} | :error
```

Returns the bundled source that owns a reserved tool name.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
