Versions in this module Expand all Collapse all v0 v0.1.0 Sep 1, 2026 Changes in this version + func Compact(ctx context.Context, strategy Strategy, messages []*message.Message, ...) ([]*message.Message, error) + func DefaultToolCallFormatter(group *MessageGroup) string + func NewContextProvider(cfg ContextProviderConfig) agent.ContextProvider + type ContextProviderConfig struct + Logger *slog.Logger + SourceID string + StateKey string + Strategy Strategy + TokenCounter TokenCounter + type ContextWindowStrategy struct + MaxContextWindowTokens int + MaxOutputTokens int + ToolEvictionThreshold float64 + TruncationThreshold float64 + func (s *ContextWindowStrategy) Compact(ctx context.Context, index *MessageIndex) (bool, error) + type GroupKind int + const GroupKindAssistantText + const GroupKindSummary + const GroupKindSystem + const GroupKindToolCall + const GroupKindUser + type MessageGroup struct + ByteCount int + ExcludeReason string + IsExcluded bool + Kind GroupKind + MessageCount int + Messages []*message.Message + TokenCount int + TurnIndex *int + type MessageIndex struct + Groups []*MessageGroup + TokenCounter TokenCounter + func CreateMessageIndex(messages []*message.Message, tokenCounter TokenCounter) *MessageIndex + func NewMessageIndex(groups []*MessageGroup, tokenCounter TokenCounter) *MessageIndex + func (index *MessageIndex) AddGroup(kind GroupKind, messages []*message.Message, turnIndex *int) *MessageGroup + func (index *MessageIndex) AllMessages() []*message.Message + func (index *MessageIndex) IncludedByteCount() int + func (index *MessageIndex) IncludedGroupCount() int + func (index *MessageIndex) IncludedMessageCount() int + func (index *MessageIndex) IncludedMessages() []*message.Message + func (index *MessageIndex) IncludedNonSystemGroupCount() int + func (index *MessageIndex) IncludedTokenCount() int + func (index *MessageIndex) IncludedTurnCount() int + func (index *MessageIndex) InsertGroup(at int, kind GroupKind, messages []*message.Message, turnIndex *int) *MessageGroup + func (index *MessageIndex) RawMessageCount() int + func (index *MessageIndex) TotalByteCount() int + func (index *MessageIndex) TotalGroupCount() int + func (index *MessageIndex) TotalMessageCount() int + func (index *MessageIndex) TotalTokenCount() int + func (index *MessageIndex) TotalTurnCount() int + func (index *MessageIndex) TurnGroups(turnIndex int) []*MessageGroup + func (index *MessageIndex) Update(messages []*message.Message) + type PipelineStrategy struct + Strategies []Strategy + func (strategy *PipelineStrategy) Compact(ctx context.Context, index *MessageIndex) (bool, error) + type SlidingWindowStrategy struct + MinimumPreservedTurns *int + Target Trigger + Trigger Trigger + func (strategy *SlidingWindowStrategy) Compact(_ context.Context, index *MessageIndex) (bool, error) + type Strategy interface + Compact func(context.Context, *MessageIndex) (bool, error) + type SummarizationStrategy struct + MinimumPreservedGroups *int + SummarizationPrompt *string + Summarizer Summarizer + SummaryUnavailableMessage string + Target Trigger + Trigger Trigger + func (strategy *SummarizationStrategy) Compact(ctx context.Context, index *MessageIndex) (bool, error) + type Summarizer interface + Summarize func(context.Context, []*message.Message) (string, error) + type SummarizerFunc func(context.Context, []*message.Message) (string, error) + func (f SummarizerFunc) Summarize(ctx context.Context, messages []*message.Message) (string, error) + type TokenCounter interface + CountTokens func(string) int + type ToolResultStrategy struct + MinimumPreservedGroups *int + Target Trigger + ToolCallFormatter func(*MessageGroup) string + Trigger Trigger + func (strategy *ToolResultStrategy) Compact(_ context.Context, index *MessageIndex) (bool, error) + type Trigger func(*MessageIndex) bool + func All(triggers ...Trigger) Trigger + func Always() Trigger + func Any(triggers ...Trigger) Trigger + func GroupsExceed(maxGroups int) Trigger + func HasToolCalls() Trigger + func MessagesExceed(maxMessages int) Trigger + func Never() Trigger + func TokensBelow(maxTokens int) Trigger + func TokensExceed(maxTokens int) Trigger + func TurnsExceed(maxTurns int) Trigger + type TruncationStrategy struct + MinimumPreservedGroups *int + Target Trigger + Trigger Trigger + func (strategy *TruncationStrategy) Compact(_ context.Context, index *MessageIndex) (bool, error)