Entropic 2.3.8
Local-first agentic inference engine
Loading...
Searching...
No Matches
compaction.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
13#pragma once
14
17
18#include <string>
19#include <unordered_map>
20#include <vector>
21
22namespace entropic {
23
33public:
39 explicit TokenCounter(int max_tokens);
40
47 int count_message(const Message& msg) const;
48
55 int count_messages(const std::vector<Message>& messages) const;
56
63 float usage_percent(const std::vector<Message>& messages) const;
64
69 void clear_cache();
70
72
73private:
80 static int count_text(const std::string& text);
81
82 mutable std::unordered_map<const void*, int> cache_;
83};
84
90 bool compacted = false;
93 std::string summary;
96 std::vector<Message> messages;
97
98 /* v1.9.9 additions */
99 std::string identity;
100 std::string compactor_source;
102};
103
114public:
122
132 std::vector<Message>& messages,
133 bool force = false,
134 const std::string& conversation_id = "");
135
148 const std::vector<Message>& messages);
149
155 void set_storage(const struct StorageInterface* storage);
156
159
160private:
169 std::vector<Message> compact(
170 const std::vector<Message>& messages,
171 std::string& summary,
172 int& stripped_count);
173
180 static std::string structured_summary(
181 const std::vector<Message>& messages);
182
189 static std::string extract_original_task(
190 const std::vector<Message>& messages);
191
198 static std::vector<std::pair<std::string, std::string>>
199 extract_tool_log(const std::vector<Message>& messages);
200
208 static std::string format_summary(
209 const std::string& summary,
210 int message_count);
211
218 void save_snapshot(const std::string& conversation_id,
219 const std::vector<Message>& messages);
220
221 const struct StorageInterface* storage_ = nullptr;
222};
223
224} // namespace entropic
Manages automatic context compaction.
Definition compaction.h:113
CompactionResult compact_messages(const std::vector< Message > &messages)
Compact messages using the value-density strategy.
CompactionConfig config
Compaction configuration.
Definition compaction.h:157
TokenCounter & counter
Shared token counter.
Definition compaction.h:158
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.
Definition compaction.h:32
int max_tokens
Maximum context window size.
Definition compaction.h:71
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.
Definition config.h:508
Result of a compaction operation.
Definition compaction.h:89
int messages_summarized
Messages stripped into summary.
Definition compaction.h:95
std::string summary
Generated summary text.
Definition compaction.h:93
std::string identity
Identity that triggered compaction.
Definition compaction.h:99
std::vector< Message > messages
The compacted message list (v1.9.9)
Definition compaction.h:96
int preserved_messages
Messages kept after compaction.
Definition compaction.h:94
int old_token_count
Token count before compaction.
Definition compaction.h:91
int new_token_count
Token count after compaction.
Definition compaction.h:92
bool custom_compactor_used
true if a consumer-provided compactor ran
Definition compaction.h:101
bool compacted
Whether compaction occurred.
Definition compaction.h:90
std::string compactor_source
"default", "global_custom", or identity name
Definition compaction.h:100
A message in a conversation.
Definition message.h:35
Storage interface for conversation persistence.