move context functions from agent/context.rs to thought/context.rs

trim_conversation moved to thought/context.rs where model_context_window,
msg_token_count, is_context_overflow, is_stream_error already lived.
Delete the duplicate agent/context.rs (94 lines).

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
Kent Overstreet 2026-04-02 15:28:00 -04:00
parent 01bfbc0dad
commit 214806cb90
5 changed files with 48 additions and 104 deletions

View file

@ -180,8 +180,8 @@ impl Agent {
/// every startup/compaction.
pub fn budget(&self) -> ContextBudget {
let count_str = |s: &str| self.tokenizer.encode_with_special_tokens(s).len();
let count_msg = |m: &Message| crate::agent::context::msg_token_count(&self.tokenizer, m);
let window = crate::agent::context::model_context_window(&self.client.model);
let count_msg = |m: &Message| crate::thought::context::msg_token_count(&self.tokenizer, m);
let window = crate::thought::context::model_context_window(&self.client.model);
self.context.budget(&count_str, &count_msg, window)
}
@ -326,7 +326,7 @@ impl Agent {
// Handle stream errors with retry logic
if let Some(e) = stream_error {
let err = anyhow::anyhow!("{}", e);
if crate::agent::context::is_context_overflow(&err) && overflow_retries < 2 {
if crate::thought::context::is_context_overflow(&err) && overflow_retries < 2 {
overflow_retries += 1;
let _ = ui_tx.send(UiMessage::Info(format!(
"[context overflow — compacting and retrying ({}/2)]",
@ -335,7 +335,7 @@ impl Agent {
self.emergency_compact();
continue;
}
if crate::agent::context::is_stream_error(&err) && empty_retries < 2 {
if crate::thought::context::is_stream_error(&err) && empty_retries < 2 {
empty_retries += 1;
let _ = ui_tx.send(UiMessage::Info(format!(
"[stream error: {} — retrying ({}/2)]",
@ -790,7 +790,7 @@ impl Agent {
// Walk backwards from cutoff, accumulating entries within 5% of context
let count = |s: &str| self.tokenizer.encode_with_special_tokens(s).len();
let context_window = crate::agent::context::model_context_window(&self.client.model);
let context_window = crate::thought::context::model_context_window(&self.client.model);
let journal_budget = context_window * 5 / 100;
dbg_log!("[journal] budget={} tokens ({}*5%)", journal_budget, context_window);
@ -976,7 +976,7 @@ impl Agent {
fn do_compact(&mut self) {
let conversation: Vec<Message> = self.context.entries.iter()
.map(|e| e.api_message().clone()).collect();
let messages = crate::agent::context::trim_conversation(
let messages = crate::thought::context::trim_conversation(
&self.context,
&conversation,
&self.client.model,
@ -1040,7 +1040,7 @@ impl Agent {
let n = entries.len();
let conversation: Vec<Message> = entries.iter()
.map(|e| e.api_message().clone()).collect();
let trimmed = crate::agent::context::trim_conversation(
let trimmed = crate::thought::context::trim_conversation(
&self.context,
&conversation,
&self.client.model,