Help us shape the future of Go! Take the 2026 Go Developer Survey

compact

package
v0.0.0-...-a92561a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package compact provides compaction strategies, types, and helpers for context-window management. See ../../docs/plans/engine-refactor-plan.md.

Index

Constants

View Source
const PriorSummaryPrefix = "[Conversation summary]"

PriorSummaryPrefix is the marker prefix rho prepends to a persisted conversation summary message.

Variables

This section is empty.

Functions

func APICompactMessages

func APICompactMessages(msgs []types.FluxMessage, cfg APICompactConfig) []types.FluxMessage

func AdjustIndexToPreserveAPIInvariants

func AdjustIndexToPreserveAPIInvariants(msgs []types.FluxMessage, startIdx int) int

func BuildCompactPrompt

func BuildCompactPrompt(variant CompactVariant) string

func BuildIncrementalCompactPrompt

func BuildIncrementalCompactPrompt(priorSummary string) string

BuildIncrementalCompactPrompt builds a prompt that merges the new conversation into an existing prior summary instead of re-summarizing from scratch. priorSummary is the previously generated structured summary.

func BuildPrompt

func BuildPrompt(variant Variant) string

BuildPrompt renders the compaction prompt template for the given variant.

func CalculateMessagesToKeepIndex

func CalculateMessagesToKeepIndex(msgs []types.FluxMessage, cfg SessionMemoryConfig) int

func CountClearableToolResults

func CountClearableToolResults(msgs []types.FluxMessage) int

func ExtractPriorSummary

func ExtractPriorSummary(msgs []types.FluxMessage) string

ExtractPriorSummary extracts the previously generated summary text from the first message of a conversation if one was persisted by an earlier compaction. It returns "" when no prior summary is present.

func FilterCompactBoundaries

func FilterCompactBoundaries(msgs []types.FluxMessage) []types.FluxMessage

func FormatCompactSummary

func FormatCompactSummary(raw string) string

func FormatSummary

func FormatSummary(raw string) string

FormatSummary normalises a raw LLM summary for display.

func HasTextContent

func HasTextContent(m types.FluxMessage) bool

func HasTimeGap

func HasTimeGap(msgs []types.FluxMessage, threshold time.Duration) bool

func IndexPath

func IndexPath(sessionID string) string

IndexPath is the per-session segment index file.

func IsCompactBoundary

func IsCompactBoundary(m types.FluxMessage) bool

func IsCompactableTool

func IsCompactableTool(name string) bool

func MicrocompactMessages

func MicrocompactMessages(msgs []types.FluxMessage, cfg MicroCompactConfig) []types.FluxMessage

func NextSegmentIndex

func NextSegmentIndex(sessionID string) int

NextSegmentIndex derives the next segment number from existing files on disk, falling back to the INDEX rows when files were pruned.

func ReadSessionMemory

func ReadSessionMemory(sessionID string) (string, error)

func RenderSegmentToMarkdown

func RenderSegmentToMarkdown(msgs []types.FluxMessage, segIndex int, detail CompactionDetail) string

RenderSegmentToMarkdown renders messages into a self-contained markdown segment. Pure: no I/O.

func SegmentsDir

func SegmentsDir(sessionID string) string

SegmentsDir is the per-session directory holding compaction segments.

func SessionMemoryPath

func SessionMemoryPath(sessionID string) string

func ToolNameForResult

func ToolNameForResult(m types.FluxMessage, msgs []types.FluxMessage) string

func WriteCompactionSegment

func WriteCompactionSegment(sessionID string, msgs []types.FluxMessage, detail CompactionDetail) (string, error)

WriteCompactionSegment persists msgs as the next segment and appends an INDEX.md row. It returns the written segment path. Callers should treat errors as non-fatal: segment persistence must never block compaction.

Types

type APICompactConfig

type APICompactConfig struct {
	TriggerTokens    int
	KeepTargetTokens int
	ClearToolInputs  bool
	ClearThinking    bool
	PreserveMutating bool
}

func DefaultAPICompactConfig

func DefaultAPICompactConfig() APICompactConfig

func DefaultAPIConfig

func DefaultAPIConfig() APICompactConfig

DefaultAPIConfig returns the default API-boundary compactor config.

type CompactConfig

type CompactConfig struct {
	AutoEnabled       bool
	ContextWindowSize int
	AutoCompactBuffer int
	MaxOutputTokens   int
	MaxFailures       int
	Cooldown          time.Duration
}

func DefaultCompactConfig

func DefaultCompactConfig() CompactConfig

type CompactResult

type CompactResult struct {
	Messages     []types.FluxMessage
	Summary      string
	TokensBefore int
	TokensAfter  int
	Strategy     string
}

type CompactVariant

type CompactVariant int
const (
	CompactBase CompactVariant = iota
	CompactPartial
	CompactUpTo
)

type CompactionDetail

type CompactionDetail int

CompactionDetail controls how much per-turn detail lands in a segment.

const (
	// SegmentNone: stats only, no verbatim turns.
	SegmentNone CompactionDetail = iota
	// SegmentMinimal: one-line signature per turn.
	SegmentMinimal
	// SegmentBalanced: tool calls + truncated responses + full text.
	SegmentBalanced
	// SegmentVerbose: full verbatim turns (default).
	SegmentVerbose
)

func ParseCompactionDetail

func ParseCompactionDetail(s string) (CompactionDetail, bool)

ParseCompactionDetail parses a user-facing detail level name.

func (CompactionDetail) String

func (d CompactionDetail) String() string

String implements fmt.Stringer for logs.

type CompactionTrigger

type CompactionTrigger struct {
	Threshold   float64
	WindowSize  int
	LastCompact time.Time
	MinInterval time.Duration
}

func NewCompactionTrigger

func NewCompactionTrigger(windowSize int) *CompactionTrigger

func (*CompactionTrigger) MarkCompacted

func (ct *CompactionTrigger) MarkCompacted()

func (*CompactionTrigger) ShouldCompact

func (ct *CompactionTrigger) ShouldCompact(currentTokens int) bool

type Config

type Config = CompactConfig

Config tunes compaction behaviour.

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns the default top-level compaction config.

type FileTracker

type FileTracker struct {
	ReadFiles     map[string]int
	ModifiedFiles map[string]int
}

func NewFileTracker

func NewFileTracker() *FileTracker

func (*FileTracker) ExtractFromMessages

func (ft *FileTracker) ExtractFromMessages(messages []types.FluxMessage)

func (*FileTracker) FormatForSummary

func (ft *FileTracker) FormatForSummary() string

func (*FileTracker) Merge

func (ft *FileTracker) Merge(other *FileTracker)

func (*FileTracker) ParseFromSummary

func (ft *FileTracker) ParseFromSummary(summary string)

func (*FileTracker) RecordModified

func (ft *FileTracker) RecordModified(path string)

func (*FileTracker) RecordRead

func (ft *FileTracker) RecordRead(path string)

type MicroCompactConfig

type MicroCompactConfig struct {
	CompactableTools map[string]bool
	TimeGapMins      float64
	KeepRecent       int
}

func DefaultMicroCompactConfig

func DefaultMicroCompactConfig() MicroCompactConfig

func DefaultMicroConfig

func DefaultMicroConfig() MicroCompactConfig

DefaultMicroConfig returns the default micro-compactor config.

type Result

type Result = CompactResult

Result is the outcome of a compaction pass.

type SessionMemoryConfig

type SessionMemoryConfig struct {
	MinTokens            int
	MinTextBlockMessages int
	MaxTokens            int
}

func DefaultSessionMemoryConfig

func DefaultSessionMemoryConfig() SessionMemoryConfig

type Variant

type Variant = CompactVariant

Variant identifies which compaction prompt variant to render.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL