# `ASM.Execution.Environment`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/execution/environment.ex#L1)

Normalized runtime environment and policy context for ASM execution.

# `t`

```elixir
@type t() :: %ASM.Execution.Environment{
  allowed_tools: [String.t()],
  approval_posture: :manual | :auto | :none | nil,
  permission_mode: ASM.Permission.normalized_mode() | nil,
  workspace_root: String.t() | nil
}
```

# `validation_error`

```elixir
@type validation_error() ::
  {:unknown_execution_environment_fields, [term()]}
  | {:invalid_workspace_root, term()}
  | {:invalid_allowed_tools, term()}
  | {:invalid_approval_posture, term()}
  | {:invalid_permission_mode, term()}
  | {:invalid_execution_environment, term()}
```

# `keys`

```elixir
@spec keys() :: [atom(), ...]
```

# `new`

```elixir
@spec new(t() | keyword() | map() | nil) :: {:ok, t()} | {:error, validation_error()}
```

# `normalize_attrs`

```elixir
@spec normalize_attrs(t() | keyword() | map() | nil) ::
  {:ok, keyword()} | {:error, validation_error()}
```

# `to_attrs`

```elixir
@spec to_attrs(t()) :: keyword()
```

---

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