pub struct RollingWindow { /* private fields */ }Expand description
Keep the last max_turns conversation turns; discard older ones.
Simple, predictable, zero overhead. The default provider.
Configure via [memory] window = 20 in newt.toml.
Implementations§
Source§impl RollingWindow
impl RollingWindow
Sourcepub fn new(max_turns: usize) -> Self
pub fn new(max_turns: usize) -> Self
Create a rolling window that retains the last max_turns turns.
Sourcepub fn from_config() -> Self
pub fn from_config() -> Self
Create from config, falling back to the default window size.
pub fn turn_count(&self) -> usize
Trait Implementations§
Source§impl MemoryProvider for RollingWindow
impl MemoryProvider for RollingWindow
Source§fn build_messages(&self, system_prompt: &str, new_task: &str) -> Vec<MemMessage>
fn build_messages(&self, system_prompt: &str, new_task: &str) -> Vec<MemMessage>
Build the full message list (including history) to send to the model. Read more
Source§fn sync_turn<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 mut self,
user: &'life1 str,
assistant: &'life2 str,
_metrics: &'life3 TurnMetrics,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn sync_turn<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 mut self,
user: &'life1 str,
assistant: &'life2 str,
_metrics: &'life3 TurnMetrics,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Persist a completed turn. Read more
Source§fn reset(&mut self)
fn reset(&mut self)
Clear conversation-local history while preserving provider configuration
and system-prompt state. Used when the TUI starts a fresh conversation
inside the same running process.
Source§fn restore_turns(&mut self, turns: &[ConversationTurn])
fn restore_turns(&mut self, turns: &[ConversationTurn])
Replace conversation-local history with durable restored turns. Read more
Source§fn usage(&self) -> Option<(String, usize, usize)>
fn usage(&self) -> Option<(String, usize, usize)>
Report current usage for display (e.g.
/memory command).
Returns (label, current, max) — e.g. ("turns", 12, 20).Source§fn initialize<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
One-time setup at session start (load files, warm caches, etc.).
Default: no-op.
Source§fn system_prompt_block(&self) -> Option<String>
fn system_prompt_block(&self) -> Option<String>
Return a static block for the system prompt. Read more
Source§fn prefetch<'life0, 'life1, 'async_trait>(
&'life0 self,
_query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn prefetch<'life0, 'life1, 'async_trait>(
&'life0 self,
_query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Recall relevant context to prepend to the user turn before the API
call. Should be fast — use cached results, don’t block.
Return empty string to contribute nothing.
Source§fn take_compaction_record(&mut self) -> Option<String>
fn take_compaction_record(&mut self) -> Option<String>
Take (and clear) the compaction record minted since the last call —
the full marked summary message a compressing provider inserted into
its working set (Step 18.5, #247). The caller persists it as a turn
record (
user = the marked message, assistant = empty, token
columns NULL — it is not a backend-measured turn) so a later restore
can rehydrate the same working-set shape via Self::restore_turns.
Default: None — providers that never compress mint nothing.Source§fn on_pre_compress<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 [MemMessage],
) -> Pin<Box<dyn Future<Output = String> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_pre_compress<'life0, 'life1, 'async_trait>(
&'life0 self,
_messages: &'life1 [MemMessage],
) -> Pin<Box<dyn Future<Output = String> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called before old messages are discarded (e.g. during compression).
Extract anything worth keeping from
messages; return it as a string
to include in the compression summary. Return empty string for nothing.Source§fn on_session_end<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_messages: &'life1 [MemMessage],
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_session_end<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_messages: &'life1 [MemMessage],
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called once when the session ends. Use for final extraction / cleanup.
Source§fn replace_note(&mut self, _old_substring: &str, _new_text: &str) -> Result<()>
fn replace_note(&mut self, _old_substring: &str, _new_text: &str) -> Result<()>
Replace the single persisted note containing
old_substring with
new_text (Step 19.3 — the save_note tool’s replace action).
Default: NotesUnsupported, same routing contract as add_note.Source§fn remove_note(&mut self, _substring: &str) -> Result<()>
fn remove_note(&mut self, _substring: &str) -> Result<()>
Remove the single persisted note containing
substring (Step 19.3 —
the save_note tool’s remove action).
Default: NotesUnsupported, same routing contract as add_note.Auto Trait Implementations§
impl Freeze for RollingWindow
impl RefUnwindSafe for RollingWindow
impl Send for RollingWindow
impl Sync for RollingWindow
impl Unpin for RollingWindow
impl UnsafeUnpin for RollingWindow
impl UnwindSafe for RollingWindow
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more