19#include <unordered_map>
66 float usage_percent(
const std::vector<Message>& messages)
const;
84 static int count_text(
const std::string& text);
86 mutable std::unordered_map<const void*, int> cache_;
137 std::vector<Message>& messages,
139 const std::string& conversation_id =
"");
154 const std::vector<Message>& messages);
176 std::vector<Message> compact(
177 const std::vector<Message>& messages,
178 std::string& summary,
179 int& stripped_count);
187 static std::string structured_summary(
188 const std::vector<Message>& messages);
196 static std::string extract_original_task(
197 const std::vector<Message>& messages);
205 static std::vector<std::pair<std::string, std::string>>
206 extract_tool_log(
const std::vector<Message>& messages);
215 static std::string format_summary(
216 const std::string& summary,
226 void save_snapshot(
const std::string& conversation_id,
227 const std::vector<Message>& messages);
Manages automatic context compaction.
CompactionResult compact_messages(const std::vector< Message > &messages)
Compact messages using the value-density strategy.
CompactionConfig config
Compaction configuration.
TokenCounter & counter
Shared token counter.
CompactionResult check_and_compact(std::vector< Message > &messages, bool force=false, const std::string &conversation_id="")
Check if compaction is needed and perform if so.
void set_storage(const struct StorageInterface *storage)
Set storage interface for compaction snapshots.
Track token usage across conversation.
int max_tokens
Maximum context window size.
void clear_cache()
Clear the token count cache.
int count_messages(const std::vector< Message > &messages) const
Count total tokens in a message list.
float usage_percent(const std::vector< Message > &messages) const
Get usage as fraction of context window (0.0–1.0).
int count_message(const Message &msg) const
Count tokens in a single message.
Configuration structs with defaults.
Message struct for conversation history.
Activate model on GPU (WARM → ACTIVE).
Auto-compaction configuration.
Result of a compaction operation.
int messages_summarized
Messages stripped into summary.
std::string summary
Generated summary text.
std::string identity
Identity that triggered compaction.
std::vector< Message > messages
The compacted message list (v1.9.9)
int preserved_messages
Messages kept after compaction.
int old_token_count
Token count before compaction.
int new_token_count
Token count after compaction.
bool custom_compactor_used
true if a consumer-provided compactor ran
bool compacted
Whether compaction occurred.
std::string compactor_source
"default", "global_custom", or identity name
A message in a conversation.
Storage interface for conversation persistence.