Entropic 2.11.1
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
48 int count_message(const Message& msg) const;
49
57 int count_messages(const std::vector<Message>& messages) const;
58
66 float usage_percent(const std::vector<Message>& messages) const;
67
72 void clear_cache();
73
75
76private:
84 static int count_text(const std::string& text);
85
86 mutable std::unordered_map<const void*, int> cache_;
87};
88
94 bool compacted = false;
97 std::string summary;
100 std::vector<Message> messages;
101
102 /* v1.9.9 additions */
103 std::string identity;
104 std::string compactor_source;
106};
107
118public:
126
137 std::vector<Message>& messages,
138 bool force = false,
139 const std::string& conversation_id = "");
140
154 const std::vector<Message>& messages);
155
161 void set_storage(const struct StorageInterface* storage);
162
165
166private:
176 std::vector<Message> compact(
177 const std::vector<Message>& messages,
178 std::string& summary,
179 int& stripped_count);
180
187 static std::string structured_summary(
188 const std::vector<Message>& messages);
189
196 static std::string extract_original_task(
197 const std::vector<Message>& messages);
198
205 static std::vector<std::pair<std::string, std::string>>
206 extract_tool_log(const std::vector<Message>& messages);
207
215 static std::string format_summary(
216 const std::string& summary,
217 int message_count);
218
226 void save_snapshot(const std::string& conversation_id,
227 const std::vector<Message>& messages);
228
229 const struct StorageInterface* storage_ = nullptr;
230};
231
232} // namespace entropic
Manages automatic context compaction.
Definition compaction.h:117
CompactionResult compact_messages(const std::vector< Message > &messages)
Compact messages using the value-density strategy.
CompactionConfig config
Compaction configuration.
Definition compaction.h:163
TokenCounter & counter
Shared token counter.
Definition compaction.h:164
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:74
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:742
Result of a compaction operation.
Definition compaction.h:93
int messages_summarized
Messages stripped into summary.
Definition compaction.h:99
std::string summary
Generated summary text.
Definition compaction.h:97
std::string identity
Identity that triggered compaction.
Definition compaction.h:103
std::vector< Message > messages
The compacted message list (v1.9.9)
Definition compaction.h:100
int preserved_messages
Messages kept after compaction.
Definition compaction.h:98
int old_token_count
Token count before compaction.
Definition compaction.h:95
int new_token_count
Token count after compaction.
Definition compaction.h:96
bool custom_compactor_used
true if a consumer-provided compactor ran
Definition compaction.h:105
bool compacted
Whether compaction occurred.
Definition compaction.h:94
std::string compactor_source
"default", "global_custom", or identity name
Definition compaction.h:104
A message in a conversation.
Definition message.h:36
Storage interface for conversation persistence.