19#include <unordered_map>
63 float usage_percent(
const std::vector<Message>& messages)
const;
80 static int count_text(
const std::string& text);
82 mutable std::unordered_map<const void*, int> cache_;
132 std::vector<Message>& messages,
134 const std::string& conversation_id =
"");
148 const std::vector<Message>& messages);
169 std::vector<Message> compact(
170 const std::vector<Message>& messages,
171 std::string& summary,
172 int& stripped_count);
180 static std::string structured_summary(
181 const std::vector<Message>& messages);
189 static std::string extract_original_task(
190 const std::vector<Message>& messages);
198 static std::vector<std::pair<std::string, std::string>>
199 extract_tool_log(
const std::vector<Message>& messages);
208 static std::string format_summary(
209 const std::string& summary,
218 void save_snapshot(
const std::string& conversation_id,
219 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.