# `ASM.Extensions.ProviderSDK.Amp`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.10.0/lib/asm/extensions/provider_sdk/amp.ex#L1)

Discovery metadata and strict derivation helpers for the optional Amp-native
ASM extension namespace.

This namespace derives only common ASM placement/session data into
`AmpSdk.Types.Options`. Amp-native controls such as permissions, MCP,
skills, thread controls, labels, IDE behavior, and notification behavior must
be passed explicitly through `:native_overrides` or through direct `amp_sdk`
APIs.

# `available?`

```elixir
@spec available?() :: boolean()
```

# `derive_options`

```elixir
@spec derive_options(keyword(), keyword()) :: {:ok, struct()} | {:error, term()}
```

Derives `AmpSdk.Types.Options` from strict common ASM options.

Provider-native Amp options must be supplied in `:native_overrides`; they are
never read from the generic ASM option map.

# `extension`

```elixir
@spec extension() :: ASM.Extensions.ProviderSDK.Extension.t()
```

# `native_capabilities`

```elixir
@spec native_capabilities() :: [atom()]
```

# `native_surface_modules`

```elixir
@spec native_surface_modules() :: [module()]
```

# `sdk_app`

```elixir
@spec sdk_app() :: atom()
```

# `sdk_module`

```elixir
@spec sdk_module() :: module()
```

---

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