# CompactionSettings

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.compactionsettings/
> Summary: CompactionSettings: Determines how an agent compacts its conversation history.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

Determines how an agent compacts its conversation history.

```csharp
public sealed record CompactionSettings : IEquatable<CompactionSettings>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.compactionsettings/">CompactionSettings</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;CompactionSettings&gt;</a></dd><dt>Inherited Members</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a></dd></dl>

## Remarks

When left [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) no compaction is applied, and the run fails once
the conversation history no longer fits the model context window. An invalid
combination of fields (for example choosing
[CompactionStrategyKind.Summarization](/api/tracon.compactionstrategykind/) without any trigger) is rejected
while the agent is built, with [TraconCompilationException](/api/tracon.traconcompilationexception/); it is
not ignored silently.

## Constructors

### <a id="Tracon_CompactionSettings__ctor"></a> CompactionSettings\(\)

```csharp
public CompactionSettings()
```

## Properties

### <a id="Tracon_CompactionSettings_MaxContextWindowTokens"></a> MaxContextWindowTokens

Gets the context window size. It is required for
[CompactionStrategyKind.ContextWindow](/api/tracon.compactionstrategykind/) and ignored by the other strategies.

```csharp
public int? MaxContextWindowTokens { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_CompactionSettings_MaxOutputTokens"></a> MaxOutputTokens

Gets the upper output token limit for [CompactionStrategyKind.ContextWindow](/api/tracon.compactionstrategykind/).
When it is not given, `ModelBinding.MaxOutputTokens` from the agent's own
model binding is used, and 4096 when that is missing too.

```csharp
public int? MaxOutputTokens { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_CompactionSettings_MinimumPreservedGroups"></a> MinimumPreservedGroups

Gets the minimum number of groups kept for [CompactionStrategyKind.Truncation](/api/tracon.compactionstrategykind/),
[CompactionStrategyKind.ToolResult](/api/tracon.compactionstrategykind/) and
[CompactionStrategyKind.Summarization](/api/tracon.compactionstrategykind/). 4 is used when it is not given.

```csharp
public int? MinimumPreservedGroups { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_CompactionSettings_MinimumPreservedTurns"></a> MinimumPreservedTurns

Gets the minimum number of turns kept for
[CompactionStrategyKind.SlidingWindow](/api/tracon.compactionstrategykind/). 2 is used when it is not given.

```csharp
public int? MinimumPreservedTurns { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_CompactionSettings_Strategy"></a> Strategy

Gets the strategy to apply.

```csharp
public CompactionStrategyKind Strategy { get; init; }
```

#### Property Value

 [CompactionStrategyKind](/api/tracon.compactionstrategykind/)

### <a id="Tracon_CompactionSettings_SummarizationModel"></a> SummarizationModel

Gets the model used for the summarization call. When it is empty the order is
followed: the application-wide helper model setting, and the agent's own model
when that is missing.

```csharp
public ModelBinding? SummarizationModel { get; init; }
```

#### Property Value

 [ModelBinding](/api/tracon.modelbinding/)?

### <a id="Tracon_CompactionSettings_SummarizationPrompt"></a> SummarizationPrompt

Gets the extra instruction added to the summarization prompt for
[CompactionStrategyKind.Summarization](/api/tracon.compactionstrategykind/) and
[CompactionStrategyKind.Pipeline](/api/tracon.compactionstrategykind/). When [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) the
default prompt of MAF is used.

```csharp
public string? SummarizationPrompt { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)?

### <a id="Tracon_CompactionSettings_TriggerMessages"></a> TriggerMessages

Gets the message count above which compaction is triggered.

```csharp
public int? TriggerMessages { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_CompactionSettings_TriggerTokens"></a> TriggerTokens

Gets the token count above which compaction is triggered.

```csharp
public int? TriggerTokens { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_CompactionSettings_TriggerTurns"></a> TriggerTurns

Gets the turn count above which compaction is triggered.

```csharp
public int? TriggerTurns { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

## Methods

### <a id="Tracon_CompactionSettings_Equals_System_Object_"></a> Equals\(object?\)

```csharp
public override bool Equals(object? obj)
```

#### Parameters

`obj` [object](https://learn.microsoft.com/dotnet/api/system.object)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_CompactionSettings_Equals_Tracon_CompactionSettings_"></a> Equals\(CompactionSettings?\)

```csharp
public bool Equals(CompactionSettings? other)
```

#### Parameters

`other` [CompactionSettings](/api/tracon.compactionsettings/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_CompactionSettings_GetHashCode"></a> GetHashCode\(\)

```csharp
public override int GetHashCode()
```

#### Returns

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_CompactionSettings_ToString"></a> ToString\(\)

```csharp
public override string ToString()
```

#### Returns

 [string](https://learn.microsoft.com/dotnet/api/system.string)

## Operators

### <a id="Tracon_CompactionSettings_op_Equality_Tracon_CompactionSettings_Tracon_CompactionSettings_"></a> operator ==\(CompactionSettings?, CompactionSettings?\)

```csharp
public static bool operator ==(CompactionSettings? left, CompactionSettings? right)
```

#### Parameters

`left` [CompactionSettings](/api/tracon.compactionsettings/)?

`right` [CompactionSettings](/api/tracon.compactionsettings/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_CompactionSettings_op_Inequality_Tracon_CompactionSettings_Tracon_CompactionSettings_"></a> operator \!=\(CompactionSettings?, CompactionSettings?\)

```csharp
public static bool operator !=(CompactionSettings? left, CompactionSettings? right)
```

#### Parameters

`left` [CompactionSettings](/api/tracon.compactionsettings/)?

`right` [CompactionSettings](/api/tracon.compactionsettings/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)
