# `PtcRunner.PreludeStore.Tools`
[🔗](https://github.com/andreasronge/ptc_runner/blob/main/lib/ptc_runner/prelude_store/tools.ex#L1)

Private backing tools and public `prelude/` wrapper source for PreludeStore.

The backing tools are intentionally private PTC-Lisp tools. User programs see
only the compiled `prelude/` capability prelude; private tool authority is
enforced by the evaluator origin stack.

# `prelude`

```elixir
@spec prelude() :: {:ok, PtcRunner.Lisp.Prelude.t()} | {:error, term()}
```

Compiled public `prelude/` capability prelude.

# `prelude_source`

```elixir
@spec prelude_source() :: String.t()
```

Source for the public `prelude/` capability prelude.

# `reserved_names`

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

Reserved private backing tool names.

# `tools`

```elixir
@spec tools(
  PtcRunner.PreludeStore.t(),
  keyword()
) :: map()
```

Returns private backing tools for `store`.

Pass `base_tools: existing_tools` to fail closed before merging when the host
already uses one of the reserved `prelude_store_*` tool names.

# `validate_no_reserved_collisions!`

```elixir
@spec validate_no_reserved_collisions!(map()) :: :ok
```

Raises if `tools` contains a reserved private store-tool name.

---

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