> ## Documentation Index
> Fetch the complete documentation index at: https://phidatainc-redirect-agent-platform-overview.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# CompressionManager

The `CompressionManager` is responsible for compressing tool call results to save context space while preserving critical information.

## CompressionManager Attributes

| Parameter                         | Type              | Default | Description                                                                         |
| --------------------------------- | ----------------- | ------- | ----------------------------------------------------------------------------------- |
| `model`                           | `Optional[Model]` | `None`  | Model used for compression                                                          |
| `compress_tool_results`           | `bool`            | `True`  | Flag to enable tool result compression                                              |
| `compress_tool_results_limit`     | `Optional[int]`   | `None`  | Number of uncompressed tool results before compression triggers.                    |
| `compress_token_limit`            | `Optional[int]`   | `None`  | Number of tokens before compression triggers.                                       |
| `compress_tool_call_instructions` | `Optional[str]`   | `None`  | Custom prompt for compression. If not provided, uses the default compression prompt |
| `stats`                           | `Dict[str, Any]`  | `{}`    | Tracks compression statistics                                                       |

## CompressionManager Methods

### `should_compress(messages, tools, model) -> bool`

Checks whether compression should be triggered based on configured thresholds.

**Parameters:**

* `messages`: List of messages to check
* `tools`: Optional list of tools for token counting
* `model`: The Agent/Team model

**Returns:**

* `bool`: True if either threshold is met

### `ashould_compress(messages, tools, model) -> bool`

Checks whether compression should be triggered based on configured thresholds asynchronously.

**Parameters:**

* `messages`: List of messages to check
* `tools`: Optional list of tools for token counting
* `model`: The Agent/Team model

**Returns:**

* `bool`: True if either threshold is met

### `compress(messages: List[Message]) -> None`

Compresses all uncompressed tool results.

**Parameters:**

* `messages`: List of messages containing tool results to compress

**Returns:**

* `None`: Modifies messages in place, setting `compressed_content` on each tool message

### `acompress(messages: List[Message]) -> None`

Compresses all uncompressed tool results asynchronously.

**Parameters:**

* `messages`: List of messages containing tool results to compress

**Returns:**

* `None`: Modifies messages in place, setting `compressed_content` on each tool message
