perf: updated the memory injection warning so it only logs once, rather than after each keystroke
CI / All (macos-latest) (push) Waiting to run
CI / All (windows-latest) (push) Waiting to run
CI / All (ubuntu-latest) (push) Failing after 27s

This commit is contained in:
2026-07-02 12:47:57 -06:00
parent cd1b043b1e
commit c2d4240138
+34 -28
View File
@@ -709,6 +709,10 @@ impl RequestContext {
} }
pub fn extract_role(&self, app: &AppConfig) -> Result<Role> { pub fn extract_role(&self, app: &AppConfig) -> Result<Role> {
self.extract_role_impl(app, true)
}
fn extract_role_impl(&self, app: &AppConfig, inject_memory: bool) -> Result<Role> {
let mut role = if let Some(session) = self.session.as_ref() { let mut role = if let Some(session) = self.session.as_ref() {
session.to_role() session.to_role()
} else if let Some(agent) = self.agent.as_ref() { } else if let Some(agent) = self.agent.as_ref() {
@@ -757,34 +761,36 @@ impl RequestContext {
} }
} }
let memory_config = self.memory_config(); if inject_memory {
if memory_config.enabled { let memory_config = self.memory_config();
let store = MemoryStore { if memory_config.enabled {
global_dir: paths::global_memory_dir(), let store = MemoryStore {
workspace: memory_config.workspace, global_dir: paths::global_memory_dir(),
}; workspace: memory_config.workspace,
let with_tools = app.function_calling_support; };
let cap = if with_tools { let with_tools = app.function_calling_support;
app.memory_cap_with_tools let cap = if with_tools {
.unwrap_or(DEFAULT_MEMORY_CAP_WITH_TOOLS) app.memory_cap_with_tools
} else { .unwrap_or(DEFAULT_MEMORY_CAP_WITH_TOOLS)
app.memory_cap_without_tools } else {
.unwrap_or(DEFAULT_MEMORY_CAP_WITHOUT_TOOLS) app.memory_cap_without_tools
}; .unwrap_or(DEFAULT_MEMORY_CAP_WITHOUT_TOOLS)
match memory::build_memory_section(&store, with_tools, cap) { };
Ok(Some(section)) => { match memory::build_memory_section(&store, with_tools, cap) {
let separator = if role.is_empty_prompt() { "" } else { "\n\n" }; Ok(Some(section)) => {
role.append_to_prompt(separator); let separator = if role.is_empty_prompt() { "" } else { "\n\n" };
role.append_to_prompt(&section); role.append_to_prompt(separator);
role.append_to_prompt("\n\n"); role.append_to_prompt(&section);
role.append_to_prompt(if with_tools { role.append_to_prompt("\n\n");
prompts::DEFAULT_MEMORY_INSTRUCTIONS role.append_to_prompt(if with_tools {
} else { prompts::DEFAULT_MEMORY_INSTRUCTIONS
prompts::DEFAULT_MEMORY_INSTRUCTIONS_READONLY } else {
}); prompts::DEFAULT_MEMORY_INSTRUCTIONS_READONLY
});
}
Ok(None) => {}
Err(e) => warn!("memory injection failed: {}", e),
} }
Ok(None) => {}
Err(e) => warn!("memory injection failed: {}", e),
} }
} }
@@ -1276,7 +1282,7 @@ impl RequestContext {
pub fn generate_prompt_context(&self, app: &AppConfig) -> HashMap<&str, String> { pub fn generate_prompt_context(&self, app: &AppConfig) -> HashMap<&str, String> {
let mut output = HashMap::new(); let mut output = HashMap::new();
let role = self.extract_role(app).unwrap_or_else(|err| { let role = self.extract_role_impl(app, false).unwrap_or_else(|err| {
warn!("failed to compute effective role for prompt rendering: {err}"); warn!("failed to compute effective role for prompt rendering: {err}");
Role::default() Role::default()
}); });