pub struct ApiSurfaceProvider { /* private fields */ }Expand description
Injects the workspace’s public API surface into the system prompt, driven by a resolved set of language packs.
Implementations§
Source§impl ApiSurfaceProvider
impl ApiSurfaceProvider
Sourcepub fn new(packs: Vec<LanguagePack>, cfg: &ApiSurfaceConfig) -> Self
pub fn new(packs: Vec<LanguagePack>, cfg: &ApiSurfaceConfig) -> Self
Construct from already-resolved packs (built-ins + drop-in dirs + inline,
merged by the caller via merge_packs) and the surface budget.
Sourcepub fn from_config(cfg: &ApiSurfaceConfig) -> Self
pub fn from_config(cfg: &ApiSurfaceConfig) -> Self
Convenience for the common case: built-in packs + inline config packs (no
drop-in dirs). The TUI uses new with the dir layers added.
Trait Implementations§
Source§impl MemoryProvider for ApiSurfaceProvider
impl MemoryProvider for ApiSurfaceProvider
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 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 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 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 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 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 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 ApiSurfaceProvider
impl RefUnwindSafe for ApiSurfaceProvider
impl Send for ApiSurfaceProvider
impl Sync for ApiSurfaceProvider
impl Unpin for ApiSurfaceProvider
impl UnsafeUnpin for ApiSurfaceProvider
impl UnwindSafe for ApiSurfaceProvider
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