Entropic 2.14.3
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
92 void clear_cache();
93
95
96private:
104 static int count_text(const std::string& text);
105};
106
112 bool compacted = false;
115 std::string summary;
118 std::vector<Message> messages;
119
120 /* v1.9.9 additions */
121 std::string identity;
122 std::string compactor_source;
124};
125
136public:
144
155 std::vector<Message>& messages,
156 bool force = false,
157 const std::string& conversation_id = "");
158
172 const std::vector<Message>& messages);
173
179 void set_storage(const struct StorageInterface* storage);
180
183
184private:
194 std::vector<Message> compact(
195 const std::vector<Message>& messages,
196 std::string& summary,
197 int& stripped_count);
198
205 static std::string structured_summary(
206 const std::vector<Message>& messages);
207
214 static std::string extract_original_task(
215 const std::vector<Message>& messages);
216
223 static std::vector<std::pair<std::string, std::string>>
224 extract_tool_log(const std::vector<Message>& messages);
225
233 static std::string format_summary(
234 const std::string& summary,
235 int message_count);
236
244 void save_snapshot(const std::string& conversation_id,
245 const std::vector<Message>& messages);
246
247 const struct StorageInterface* storage_ = nullptr;
248};
249
250} // namespace entropic
Manages automatic context compaction.
Definition compaction.h:135
CompactionResult compact_messages(const std::vector< Message > &messages)
Compact messages using the value-density strategy.
CompactionConfig config
Compaction configuration.
Definition compaction.h:181
TokenCounter & counter
Shared token counter.
Definition compaction.h:182
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:94
void clear_cache()
Clear the token count cache — retained as a no-op (gh#158).
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:1059
Result of a compaction operation.
Definition compaction.h:111
int messages_summarized
Messages stripped into summary.
Definition compaction.h:117
std::string summary
Generated summary text.
Definition compaction.h:115
std::string identity
Identity that triggered compaction.
Definition compaction.h:121
std::vector< Message > messages
The compacted message list (v1.9.9)
Definition compaction.h:118
int preserved_messages
Messages kept after compaction.
Definition compaction.h:116
int old_token_count
Token count before compaction.
Definition compaction.h:113
int new_token_count
Token count after compaction.
Definition compaction.h:114
bool custom_compactor_used
true if a consumer-provided compactor ran
Definition compaction.h:123
bool compacted
Whether compaction occurred.
Definition compaction.h:112
std::string compactor_source
"default", "global_custom", or identity name
Definition compaction.h:122
A message in a conversation.
Definition message.h:36
Storage interface for conversation persistence.