pub struct SdkAgent(/* private fields */);Expand description
SDK-owned emulation runtime component.
The wrapper makes ownership transfer explicit: public adapters receive an
SDK component, and crate::server::RpcEngine consumes that component as
the sole live-loop owner. It intentionally does not implement Deref:
model/tool-loop entry points stay unreachable outside the SDK/runtime
implementation boundary.
Implementations§
Source§impl SdkAgent
impl SdkAgent
Sourcepub fn config(&self) -> &Config
pub fn config(&self) -> &Config
Read the resolved runtime configuration without acquiring loop ownership.
Sourcepub fn set_recorder(&mut self, writer: SidecarWriter)
pub fn set_recorder(&mut self, writer: SidecarWriter)
Install the full-fidelity sidecar writer used by SDK persistence.
Sourcepub fn set_journal(&mut self, journal: SessionJournal)
pub fn set_journal(&mut self, journal: SessionJournal)
Install the append-only session journal — see
crate::agent::Agent::set_journal.
Sourcepub fn has_journal(&self) -> bool
pub fn has_journal(&self) -> bool
Whether an append-only journal is installed.
Sourcepub fn journal_checkpoint(&self, messages: usize)
pub fn journal_checkpoint(&self, messages: usize)
Declare the durable view caught up at messages messages.
Sourcepub fn session_tree(&self) -> Option<&SessionTree>
pub fn session_tree(&self) -> Option<&SessionTree>
This session’s in-place conversation tree, when the module is on.
Sourcepub fn set_session_tree(&mut self, tree: SessionTree)
pub fn set_session_tree(&mut self, tree: SessionTree)
Install a tree loaded from the store.
Sourcepub fn rebuild_session_tree_from_history(&mut self)
pub fn rebuild_session_tree_from_history(&mut self)
Materialize the degenerate single-path tree from the live history.
Sourcepub fn rewind_conversation(&mut self, keep: usize) -> RewindOutcome
pub fn rewind_conversation(&mut self, keep: usize) -> RewindOutcome
Rewind THIS conversation to an earlier point, recorded and
invertible — see crate::agent::Agent::rewind_conversation.
Sourcepub fn undo_rewind(&mut self) -> bool
pub fn undo_rewind(&mut self) -> bool
Invert the most recent rewind.
Sourcepub fn undoable_rewinds(&self) -> usize
pub fn undoable_rewinds(&self) -> usize
How many rewinds are currently undoable.
Sourcepub fn restore_rewind_undo(&mut self, stack: Vec<Vec<ChatMessage>>)
pub fn restore_rewind_undo(&mut self, stack: Vec<Vec<ChatMessage>>)
Restore an undo stack recovered from the journal.
Sourcepub fn restore_queues(&mut self, steer: &[String], follow_up: &[String])
pub fn restore_queues(&mut self, steer: &[String], follow_up: &[String])
Re-queue pending inputs recovered from the journal.
Sourcepub fn append_recovered_messages(&mut self, messages: &[ChatMessage])
pub fn append_recovered_messages(&mut self, messages: &[ChatMessage])
Append messages recovered from the journal after a crash.
Sourcepub fn arm_session_journal(
&mut self,
store: &SessionStore,
name: &str,
) -> RestoreReport
pub fn arm_session_journal( &mut self, store: &SessionStore, name: &str, ) -> RestoreReport
BP-8: arm [core.session]’s durability for name and restore what a
previous process left — see crate::session_journal::arm.
Sourcepub fn checkpoint_session_journal(
&self,
store: &SessionStore,
name: &str,
messages: usize,
)
pub fn checkpoint_session_journal( &self, store: &SessionStore, name: &str, messages: usize, )
BP-8: the mirror — see crate::session_journal::checkpoint.
Sourcepub fn plan_mode(&self) -> &Arc<PlanModeState> ⓘ
pub fn plan_mode(&self) -> &Arc<PlanModeState> ⓘ
BP-3 (§2 module 8 plan_mode): the session’s shared plan-mode state
— what a composer’s /plan toggles and the permission gate reads.
Reading or toggling it acquires no loop ownership.
Sourcepub fn set_reduction_policy(&mut self, policy: ReductionPolicy)
pub fn set_reduction_policy(&mut self, policy: ReductionPolicy)
Install the reversible provider-view reduction policy.
Sourcepub fn reduction_policy(&self) -> Option<&ReductionPolicy>
pub fn reduction_policy(&self) -> Option<&ReductionPolicy>
Inspect the current provider-view reduction policy.
Sourcepub fn set_reduction_log(&mut self, log: ReductionLog)
pub fn set_reduction_log(&mut self, log: ReductionLog)
Replace the reversible reduction log after an SDK-owned projection.
Sourcepub fn reduction_log(&self) -> &ReductionLog
pub fn reduction_log(&self) -> &ReductionLog
Inspect the reversible reduction log.
Sourcepub fn prepare_cleared_turns_summary(
&self,
messages: &[ChatMessage],
policy: &ReductionPolicy,
prior: &ReductionLog,
) -> Option<PreparedClearSummary>
pub fn prepare_cleared_turns_summary( &self, messages: &[ChatMessage], policy: &ReductionPolicy, prior: &ReductionLog, ) -> Option<PreparedClearSummary>
Prepare optional cleared-turn summary metadata without sending a turn.
Sourcepub fn set_span_summarizer(
&mut self,
summarizer: impl SpanSummarizer + Send + Sync + 'static,
)
pub fn set_span_summarizer( &mut self, summarizer: impl SpanSummarizer + Send + Sync + 'static, )
Install a reduction span summarizer.
Sourcepub fn set_session_titler(
&mut self,
titler: impl SessionTitler + Send + Sync + 'static,
)
pub fn set_session_titler( &mut self, titler: impl SessionTitler + Send + Sync + 'static, )
Install the optional persisted-session title generator.
Sourcepub fn auto_title(&self) -> Option<String>
pub fn auto_title(&self) -> Option<String>
Generate a title from canonical history when configured.
Sourcepub fn set_subagent_store(
&mut self,
store: Arc<SessionStore>,
session_name: impl Into<String>,
)
pub fn set_subagent_store( &mut self, store: Arc<SessionStore>, session_name: impl Into<String>, )
Attach a session store for SDK-owned subagent persistence.
Sourcepub fn set_claude_runtime_manifest(&mut self, manifest: ClaudeRuntimeManifest)
pub fn set_claude_runtime_manifest(&mut self, manifest: ClaudeRuntimeManifest)
Install restored Claude runtime state without activating a timer.
Sourcepub fn claude_runtime_manifest(&self) -> Option<&ClaudeRuntimeManifest>
pub fn claude_runtime_manifest(&self) -> Option<&ClaudeRuntimeManifest>
Inspect restored Claude runtime state.
Sourcepub fn claude_runtime_manifest_mut(
&mut self,
) -> Option<&mut ClaudeRuntimeManifest>
pub fn claude_runtime_manifest_mut( &mut self, ) -> Option<&mut ClaudeRuntimeManifest>
Mutate Claude runtime state from the SDK scheduler/persistence driver.
Sourcepub fn restore_claude_project_agents(&mut self) -> CoreResult<usize>
pub fn restore_claude_project_agents(&mut self) -> CoreResult<usize>
Restore project-scoped Claude agent definitions after disk reload.
Sourcepub fn load_session(&mut self, session: Session)
pub fn load_session(&mut self, session: Session)
Replace canonical history with a loaded normalized session.
Sourcepub fn load_transcript(&mut self, path: impl AsRef<Path>) -> CoreResult<()>
pub fn load_transcript(&mut self, path: impl AsRef<Path>) -> CoreResult<()>
Load a Supercode transcript through the SDK component.
Sourcepub fn save_transcript(&self, path: impl AsRef<Path>) -> CoreResult<()>
pub fn save_transcript(&self, path: impl AsRef<Path>) -> CoreResult<()>
Save the canonical transcript through the SDK component.
Sourcepub fn history(&self) -> &[ChatMessage]
pub fn history(&self) -> &[ChatMessage]
Read canonical history at a quiescent boundary.
Sourcepub fn rewind_to(&mut self, checkpoint: usize)
pub fn rewind_to(&mut self, checkpoint: usize)
Rewind canonical history to a prior message boundary.
Sourcepub fn compact_now(&mut self, focus: Option<&str>) -> bool
pub fn compact_now(&mut self, focus: Option<&str>) -> bool
BP-4 (catalog:98): compact now, with optional /compact <focus>
steering text — see Agent::compact_now.
Sourcepub fn context_usage(&self) -> ContextUsage
pub fn context_usage(&self) -> ContextUsage
BP-4 (catalog:109): live context-window accounting — see
Agent::context_usage.
Sourcepub fn new_context(
&mut self,
objective: &str,
keep_recent: Option<usize>,
) -> usize
pub fn new_context( &mut self, objective: &str, keep_recent: Option<usize>, ) -> usize
BP-4 (catalog:106): reset the working view to a fresh objective plus
a curated keep-set — see Agent::new_context.
Sourcepub fn inject_context_block(
&mut self,
name: impl Into<String>,
content: impl Into<String>,
) -> bool
pub fn inject_context_block( &mut self, name: impl Into<String>, content: impl Into<String>, ) -> bool
BP-4 (catalog:91): splice an ambient context block into the live
session — see Agent::inject_context_block.
Sourcepub fn refresh_env_context(&mut self) -> bool
pub fn refresh_env_context(&mut self) -> bool
BP-4 (catalog:90): re-derive and re-emit the environment context
block if it changed — see Agent::refresh_env_context.
Sourcepub fn append_system_note(&mut self, text: &str)
pub fn append_system_note(&mut self, text: &str)
Append an SDK-assembled system note.
Sourcepub fn register_tool(&mut self, tool: impl Tool + 'static)
pub fn register_tool(&mut self, tool: impl Tool + 'static)
Register one configured tool before transferring live-loop ownership.
Sourcepub fn register_mcp_prompt(
&mut self,
command_name: impl Into<String>,
source: impl SdkPromptSource + 'static,
)
pub fn register_mcp_prompt( &mut self, command_name: impl Into<String>, source: impl SdkPromptSource + 'static, )
Register one MCP prompt source before transferring loop ownership.
Sourcepub fn tool_schemas(&self) -> Vec<ToolSchema>
pub fn tool_schemas(&self) -> Vec<ToolSchema>
Inspect the exact next-request tool schemas for preflight measurement.
Sourcepub fn set_context_limit(&mut self, limit: u64)
pub fn set_context_limit(&mut self, limit: u64)
Arm the per-request context limit guard.
Sourcepub fn context_limit(&self) -> Option<u64>
pub fn context_limit(&self) -> Option<u64>
Inspect the armed context limit.
Sourcepub fn set_model(&mut self, model: impl Into<String>)
pub fn set_model(&mut self, model: impl Into<String>)
Switch the next-request model at a quiescent boundary.
Sourcepub fn set_service_tier(&mut self, tier: Option<String>)
pub fn set_service_tier(&mut self, tier: Option<String>)
BP-13 (catalog D9 “Fast mode / service tiers”): set or clear the
session-level service-tier override — what /fast pulls. None
restores whatever the routing table resolved for the model.
Sourcepub fn switch_model(&mut self, model: impl Into<String>)
pub fn switch_model(&mut self, model: impl Into<String>)
BP-13 (catalog D9 “Mid-session model switching”): the GOVERNED
switch — under [core.model_switch] allow_switch it strips model-A
reasoning artifacts from the live history (dep 8), records the
change in the session journal, and emits it, before moving
Config::model. With the gate off it is exactly Self::set_model.
Sourcepub fn request_issued(&self) -> bool
pub fn request_issued(&self) -> bool
Whether a provider request has actually been issued.
Sourcepub fn session_name(&self) -> Option<&str>
pub fn session_name(&self) -> Option<&str>
Configured durable session name.
Sourcepub fn session_persist(&self) -> bool
pub fn session_persist(&self) -> bool
Whether persistence is enabled for this component.
Sourcepub fn git_metadata(&self) -> Option<&GitMetadataRecord>
pub fn git_metadata(&self) -> Option<&GitMetadataRecord>
Captured git provenance.
Sourcepub fn save_git_metadata(
&self,
store: &SessionStore,
name: &str,
) -> CoreResult<()>
pub fn save_git_metadata( &self, store: &SessionStore, name: &str, ) -> CoreResult<()>
Save captured git provenance.
Sourcepub fn save_usage_log(&self, store: &SessionStore, name: &str) -> CoreResult<()>
pub fn save_usage_log(&self, store: &SessionStore, name: &str) -> CoreResult<()>
BP-7: save the accumulated per-turn usage log (tokens + cost).
Sourcepub fn turn_records(&self) -> &[TurnRecord]
pub fn turn_records(&self) -> &[TurnRecord]
BP-7: the per-round-trip marker log.
Sourcepub fn save_turn_records(
&self,
store: &SessionStore,
name: &str,
) -> CoreResult<()>
pub fn save_turn_records( &self, store: &SessionStore, name: &str, ) -> CoreResult<()>
BP-7: save the per-round-trip marker log.
Sourcepub fn note_abort(&mut self, source: &str)
pub fn note_abort(&mut self, source: &str)
BP-7: record that the in-flight turn was interrupted.
Sourcepub fn total_cost_usd(&self) -> f64
pub fn total_cost_usd(&self) -> f64
BP-7: dollars spent so far (see Self::model_priced).
Sourcepub fn model_priced(&self) -> bool
pub fn model_priced(&self) -> bool
BP-7: whether this build can price this component’s model.
Sourcepub fn total_steps(&self) -> usize
pub fn total_steps(&self) -> usize
BP-7: tool calls executed so far.
Sourcepub fn set_goal(&mut self, objective: impl Into<String>) -> bool
pub fn set_goal(&mut self, objective: impl Into<String>) -> bool
BP-7: set or revise the session’s standing objective.
Sourcepub fn goal(&self) -> Option<&GoalRecord>
pub fn goal(&self) -> Option<&GoalRecord>
BP-7: the session’s standing objective.
Sourcepub fn clear_goal(&mut self) -> bool
pub fn clear_goal(&mut self) -> bool
BP-7: drop the standing objective.
Sourcepub fn restore_goal(&mut self, goal: Option<GoalRecord>)
pub fn restore_goal(&mut self, goal: Option<GoalRecord>)
BP-7: adopt a goal loaded from the store.
Sourcepub fn save_goal(&self, store: &SessionStore, name: &str) -> CoreResult<()>
pub fn save_goal(&self, store: &SessionStore, name: &str) -> CoreResult<()>
BP-7: persist (or clear) the standing objective.
Sourcepub fn set_effort(&mut self, effort: Option<String>) -> Option<String>
pub fn set_effort(&mut self, effort: Option<String>) -> Option<String>
BP-7: change reasoning effort mid-session; None turns it off.
Sourcepub fn review_prompt(&self, args: &str) -> Option<String>
pub fn review_prompt(&self, args: &str) -> Option<String>
BP-7: this harness’s review-turn prompt with {args} filled in.
Sourcepub async fn side_question(&self, question: &str) -> CoreResult<String>
pub async fn side_question(&self, question: &str) -> CoreResult<String>
BP-7: a tool-less question over the full context that records nothing.
Sourcepub fn turn_count(&self) -> usize
pub fn turn_count(&self) -> usize
Number of non-system canonical messages.
Sourcepub fn total_output_tokens(&self) -> u64
pub fn total_output_tokens(&self) -> u64
Cumulative provider-reported output tokens.