Documentation
¶
Overview ¶
Package msgfmt formats an ordered chat transcript (oldest → newest) into a plain-text block suitable for injecting into an agent prompt.
Pure and SeaTalk-unaware: no I/O, env, cwd, or process globals.
Index ¶
Constants ¶
const DefaultMaxPerMessageRunes = 1000
DefaultMaxPerMessageRunes is the default per-message body rune cap when Options.MaxPerMessageRunes is 0 or negative.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Options ¶
type Options struct {
// MaxPerMessageRunes caps each message body. 0 or negative → DefaultMaxPerMessageRunes.
MaxPerMessageRunes int
// MaxMessages, when >0, keeps the latest N messages. 0 means no count cap.
MaxMessages int
// TotalBudgetRunes, when >0, is a rune budget on the full formatted block.
// 0 means no total budget. Oldest messages are dropped first; the last
// message is always kept even if the block still exceeds the budget.
TotalBudgetRunes int
}
Options controls selection and size caps. Zero fields select package defaults: body cap DefaultMaxPerMessageRunes, no MaxMessages count cap, no total budget.
type Result ¶
type Result struct {
Text string
Shown int
SourceCount int
OldestDropped int // SourceCount - Shown
BodiesTruncated int // messages whose body was shortened (among shown)
LastMessageID string // newest input message ID ("" if none / empty id)
}
Result is a structured view of what FormatDetailed produced.
func FormatDetailed ¶
FormatDetailed formats msgs under opts and returns text plus selection metadata.
Pipeline: (1) MaxMessages keeps latest N → (2) per-body rune cap → (3) TotalBudgetRunes drops oldest from the full formatted block.