Documentation
¶
Overview ¶
Package compact provides compaction strategies, types, and helpers for context-window management. See ../../docs/plans/engine-refactor-plan.md.
Index ¶
- Constants
- func APICompactMessages(msgs []types.FluxMessage, cfg APICompactConfig) []types.FluxMessage
- func AdjustIndexToPreserveAPIInvariants(msgs []types.FluxMessage, startIdx int) int
- func BuildCompactPrompt(variant CompactVariant) string
- func BuildIncrementalCompactPrompt(priorSummary string) string
- func BuildPrompt(variant Variant) string
- func CalculateMessagesToKeepIndex(msgs []types.FluxMessage, cfg SessionMemoryConfig) int
- func CountClearableToolResults(msgs []types.FluxMessage) int
- func ExtractPriorSummary(msgs []types.FluxMessage) string
- func FilterCompactBoundaries(msgs []types.FluxMessage) []types.FluxMessage
- func FormatCompactSummary(raw string) string
- func FormatSummary(raw string) string
- func HasTextContent(m types.FluxMessage) bool
- func HasTimeGap(msgs []types.FluxMessage, threshold time.Duration) bool
- func IndexPath(sessionID string) string
- func IsCompactBoundary(m types.FluxMessage) bool
- func IsCompactableTool(name string) bool
- func MicrocompactMessages(msgs []types.FluxMessage, cfg MicroCompactConfig) []types.FluxMessage
- func NextSegmentIndex(sessionID string) int
- func ReadSessionMemory(sessionID string) (string, error)
- func RenderSegmentToMarkdown(msgs []types.FluxMessage, segIndex int, detail CompactionDetail) string
- func SegmentsDir(sessionID string) string
- func SessionMemoryPath(sessionID string) string
- func ToolNameForResult(m types.FluxMessage, msgs []types.FluxMessage) string
- func WriteCompactionSegment(sessionID string, msgs []types.FluxMessage, detail CompactionDetail) (string, error)
- type APICompactConfig
- type CompactConfig
- type CompactResult
- type CompactVariant
- type CompactionDetail
- type CompactionTrigger
- type Config
- type FileTracker
- func (ft *FileTracker) ExtractFromMessages(messages []types.FluxMessage)
- func (ft *FileTracker) FormatForSummary() string
- func (ft *FileTracker) Merge(other *FileTracker)
- func (ft *FileTracker) ParseFromSummary(summary string)
- func (ft *FileTracker) RecordModified(path string)
- func (ft *FileTracker) RecordRead(path string)
- type MicroCompactConfig
- type Result
- type SessionMemoryConfig
- type Variant
Constants ¶
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 ¶
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 ¶
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 FormatSummary ¶
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 IsCompactBoundary ¶
func IsCompactBoundary(m types.FluxMessage) bool
func IsCompactableTool ¶
func MicrocompactMessages ¶
func MicrocompactMessages(msgs []types.FluxMessage, cfg MicroCompactConfig) []types.FluxMessage
func NextSegmentIndex ¶
NextSegmentIndex derives the next segment number from existing files on disk, falling back to the INDEX rows when files were pruned.
func ReadSessionMemory ¶
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 ¶
SegmentsDir is the per-session directory holding compaction segments.
func SessionMemoryPath ¶
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 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 ¶
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 SessionMemoryConfig ¶
func DefaultSessionMemoryConfig ¶
func DefaultSessionMemoryConfig() SessionMemoryConfig
type Variant ¶
type Variant = CompactVariant
Variant identifies which compaction prompt variant to render.