# `Gemini.Types.Live.ContextWindowCompression`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/context_window_compression.ex#L1)

Context window compression configuration for Live API sessions.

Enables context window compression - a mechanism for managing the model's
context window so that it does not exceed a given length.

## Fields

- `trigger_tokens` - Number of tokens that triggers compression (default: 80% of context limit)
- `sliding_window` - Sliding window compression mechanism configuration

## Example

    %ContextWindowCompression{
      trigger_tokens: 16000,
      sliding_window: %SlidingWindow{target_tokens: 8000}
    }

# `t`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/context_window_compression.ex#L23)

```elixir
@type t() :: %Gemini.Types.Live.ContextWindowCompression{
  sliding_window: Gemini.Types.Live.SlidingWindow.t() | nil,
  trigger_tokens: integer() | nil
}
```

# `from_api`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/context_window_compression.ex#L71)

```elixir
@spec from_api(map() | nil) :: t() | nil
```

Parses from API response.

# `new`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/context_window_compression.ex#L34)

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

Creates a new ContextWindowCompression configuration.

# `to_api`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/context_window_compression.ex#L48)

```elixir
@spec to_api(t() | map() | nil) :: map() | nil
```

Converts to API format (camelCase).

Accepts structs, maps with atom keys, or maps with string keys.
Uses fetch_value to properly preserve falsey values like 0 or false.

---

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