1pub mod attachments;
2pub mod chronological;
3pub mod direct;
4pub mod llm;
5pub mod model_info;
6pub mod monitor;
7pub mod plugin;
8mod plugin_stack;
9pub mod provider;
10pub mod runtime;
11pub mod runtime_controls;
12pub mod search;
13pub mod session;
14pub mod session_graph;
15pub mod session_model;
16pub mod standard_context_approach;
17pub mod store;
18#[cfg(any(test, feature = "testing"))]
19pub mod testing;
20pub mod tool_dispatch;
21mod tool_executor;
22mod tool_provider;
23pub mod tool_registry;
24mod tool_schema;
25mod trace;
26
27pub use lash_sansio::sansio;
28
29pub const VERSION: &str = env!("CARGO_PKG_VERSION");
30pub const SANSIO_VERSION: &str = lash_sansio::VERSION;
31
32pub use attachments::{
34 AttachmentStore, AttachmentStoreError, FileAttachmentStore, InMemoryAttachmentStore,
35 StoredAttachment,
36};
37pub use chronological::{
38 BorrowedChronologicalEntry, BorrowedChronologicalMessage, BorrowedChronologicalPayload,
39 ChronologicalEntry, ChronologicalPayload, ChronologicalProjection, visit_turn_view,
40};
41pub use direct::{
42 DirectJsonSchema, DirectLlmClient, DirectLlmError, DirectMessage, DirectOutputSpec, DirectPart,
43 DirectRequest, DirectRole,
44};
45pub use lash_sansio::llm::types::{LlmOutputPart, LlmRequest, LlmResponse, LlmTerminalReason};
46pub use lash_sansio::{
47 AcceptedInjectedTurnInput, AttachmentCreateMeta, AttachmentId, AttachmentMeta, AttachmentRef,
48 BaseRenderCache, CheckpointKind, CompactToolContract, EffectId, ErrorEnvelope, ExecResponse,
49 ExecutionMode, ImageMediaType, LlmCallError, MediaType, Message, MessageOrigin, MessageRole,
50 MessageSequence, ModeBuildInput, ModelToolReturn, ModelToolReturnPart, Part, PartKind,
51 PluginMessage, PluginSurfaceEvent, PreparedPrompt, PromptBuildInput, PromptBuiltin,
52 PromptContext, PromptContribution, PromptContributionGate, PromptContributionSet,
53 PromptFingerprint, PromptLayer, PromptPanel, PromptRequest, PromptResponse,
54 PromptSelectionMode, PromptSlot, PromptSlotLayer, PromptTemplate, PromptTemplateEntry,
55 PromptTemplateSection, PruneState, RenderedPrompt, ResolvedPromptLayer, Response,
56 RlmPrintImage, SchemaProjectionOverride, SessionEvent, TextProjectionMetadata, TokenUsage,
57 ToolActivation, ToolAvailability, ToolAvailabilityConfig, ToolCallOutcome, ToolCallOutput,
58 ToolCallRecord, ToolCallStatus, ToolCancellation, ToolContract, ToolControl, ToolDefinition,
59 ToolDiscoveryMetadata, ToolExecutionMode, ToolFailure, ToolFailureClass, ToolFailureSource,
60 ToolManifest, ToolOutputContract, ToolResult, ToolRetryDisposition, ToolRetryPolicy,
61 ToolSurface, ToolSurfaceBuildInput, ToolSurfaceEntry, ToolSurfaceOverride, ToolValue,
62 TurnFinish, TurnOutcome, TurnStop, append_assistant_text_part, build_prompt,
63 build_tool_surface, build_turn, default_execution_mode, default_prompt_template,
64 execution_mode_supported, head_tail_truncate, messages_are_prompt_resume_safe,
65 normalized_response_parts, prompt_template_fingerprint, prompt_text_fingerprint,
66 prompt_tool_names_fingerprint, reasoning_part, resolve_prompt_layers, shared_parts,
67 turn_limit_exhausted_message,
68};
69pub use standard_context_approach::{
70 ObservationalMemoryConfig, RollingHistoryConfig, StandardContextApproach,
71 StandardContextApproachKind,
72};
73pub use tool_registry::{
74 ReconfigureError, ToolRegistry, ToolSourceHandle, ToolState, ToolStateEntry,
75};
76#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
77pub struct ModeTurnOptions {
78 pub mode_id: ExecutionMode,
79 #[serde(default)]
80 pub payload: serde_json::Value,
81}
82
83impl Default for ModeTurnOptions {
84 fn default() -> Self {
85 Self::empty(ExecutionMode::standard())
86 }
87}
88
89impl ModeTurnOptions {
90 pub fn empty(mode_id: ExecutionMode) -> Self {
91 Self {
92 mode_id,
93 payload: serde_json::Value::Object(serde_json::Map::new()),
94 }
95 }
96
97 pub fn typed<T>(mode_id: ExecutionMode, value: T) -> Result<Self, serde_json::Error>
98 where
99 T: serde::Serialize,
100 {
101 Ok(Self {
102 mode_id,
103 payload: serde_json::to_value(value)?,
104 })
105 }
106
107 pub fn decode<T>(&self, expected_mode: &ExecutionMode) -> Result<Option<T>, serde_json::Error>
108 where
109 T: serde::de::DeserializeOwned,
110 {
111 if &self.mode_id != expected_mode {
112 return Ok(None);
113 }
114 serde_json::from_value(self.payload.clone()).map(Some)
115 }
116}
117
118#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
119pub struct HostModeProtocol;
120
121impl lash_sansio::ModeProtocol for HostModeProtocol {
122 type Event = crate::session_model::ModeEvent;
123 type Termination = ModeTurnOptions;
124 type DriverState = serde_json::Value;
125}
126
127pub type Effect = lash_sansio::Effect<HostModeProtocol>;
128pub type DriverAction = lash_sansio::DriverAction<HostModeProtocol>;
129pub type DriverContextView<'a> = lash_sansio::DriverContextView<'a, HostModeProtocol>;
130pub type ModeConfig = lash_sansio::ModeConfig<HostModeProtocol>;
131pub type ModePreamble = lash_sansio::ModePreamble<HostModeProtocol>;
132pub type ProjectorContext<'a> = lash_sansio::ProjectorContext<'a, HostModeProtocol>;
133pub type PreparedTurnMachine = lash_sansio::PreparedTurnMachine<HostModeProtocol>;
134pub type SansIoTurnInput = lash_sansio::SansIoTurnInput<HostModeProtocol>;
135pub type TurnMachine = lash_sansio::TurnMachine<HostModeProtocol>;
136pub type TurnMachineConfig = lash_sansio::TurnMachineConfig<HostModeProtocol>;
137#[cfg(feature = "otel-trace")]
138pub use lash_trace::otel::{OtelTraceOptions, OtelTraceSink};
139pub use lash_trace::{
140 JsonlTraceSink, TraceAttachment, TraceContentBlock, TraceContext, TraceError, TraceEvent,
141 TraceLevel, TraceLlmMessage, TraceLlmRequest, TraceLlmResponse, TracePromptComponent,
142 TraceProviderStreamEvent, TraceRecord, TraceRuntimeStreamEvent, TraceSink, TraceSinkError,
143 TraceTokenUsage, TraceToolSpec,
144};
145pub use llm::transport::{LlmTransportError, ProviderFailure, ProviderFailureKind};
146pub use model_info::{
147 CachedModelCatalog, FileModelCatalogStore, MemoryModelCatalogStore, ModelCatalog,
148 ModelCatalogSource, ModelCatalogStore, ModelInfo, ModelsDevHttpSource, ResolvedModelSpec,
149};
150pub use monitor::{
151 MAX_MONITOR_TIMEOUT_MS, MonitorArmOn, MonitorEvent, MonitorRunState, MonitorSnapshot,
152 MonitorSpec, MonitorStatus, MonitorUpdateBatch, MonitorWakePolicy,
153};
154pub use plugin::{
155 AckWakeArgs, AppendSessionNodesRequest, AppendSessionNodesResult, AssistantResponseHookContext,
156 AssistantResponseTransform, AssistantStreamHookContext, AssistantStreamTransform,
157 CheckpointHookContext, DirectCompletion, DirectLlmCompletion, HistoryError,
158 HistoryRegistrations, HistoryRewriteMetadata, HistoryRewriter, HistoryState,
159 ModeBeforeLlmCallContext, ModeExtras, ModeLlmCallAction, MonitorAckWakeOp, MonitorEmptyArgs,
160 MonitorRegisterSpecsOp, MonitorRegistrations, MonitorStartOp, MonitorStatusOp, MonitorStopOp,
161 MonitorTakeUpdatesOp, OwnedMonitorSpec, PersistentRuntimeServices, PluginAction,
162 PluginActionContext, PluginActionDef, PluginActionFailure, PluginActionInvokeError,
163 PluginActionKind, PluginDirective, PluginError, PluginFactory, PluginHost, PluginOwned,
164 PluginRegistrar, PluginRuntimeEvent, PluginRuntimeEventHook, PluginSession,
165 PluginSessionContext, PluginSessionSnapshot, PluginSnapshotArtifact, PluginSnapshotEntry,
166 PluginSnapshotMeta, PluginSpec, PluginSpecFactory, PromptHookContext, RegisterSpecsArgs,
167 RewriteContext, RewriteTrigger, RuntimeServices, SessionAppendNode,
168 SessionConfigChangedContext, SessionContextSurface, SessionCreateRequest, SessionHandle,
169 SessionParam, SessionPlugin, SessionPluginMode, SessionReadView, SessionRelation,
170 SessionSnapshot, SessionStartPoint, SessionStateChangedContext, SessionToolAccess,
171 SessionTurnHandle, SnapshotReader, SnapshotWriter, StandardCreateExtras, StartMonitorArgs,
172 StopMonitorArgs, SubagentSessionAuthority, ToolDiscoveryContext, ToolDiscoveryContribution,
173 ToolDiscoveryContributor, ToolDiscoveryToolContribution, ToolOutputBudgetConfig,
174 ToolOutputBudgetMode, ToolOutputBudgetPluginFactory, ToolResultProjectionContext,
175 ToolResultProjector, ToolSurfaceContribution, TurnContextTransform, TurnHookContext,
176 TurnResultHookContext, TurnResultSummary, TurnTransformContext, plugin_action_def,
177};
178pub use plugin_stack::PluginStack;
179pub use provider::{
180 AgentModelSelection, CacheRetention, LlmTimeouts, ProviderComponents, ProviderFactory,
181 ProviderHandle, ProviderModelPolicy, ProviderOptions, ProviderRegistry, ProviderSpec,
182 ProviderState, ProviderThinkingPolicy, ProviderTransport, RequestTimeout, StaticModelPolicy,
183 VariantRequestConfig, build_provider, provider_factory, register_provider_factory,
184};
185pub use runtime::{
186 AssembledTurn, AssistantOutput, BackgroundCancelPolicy, BackgroundClosePolicy,
187 BackgroundRuntimeHost, BackgroundTaskAttempt, BackgroundTaskEvent, BackgroundTaskFilter,
188 BackgroundTaskHost, BackgroundTaskId, BackgroundTaskKind, BackgroundTaskOutcome,
189 BackgroundTaskRecord, BackgroundTaskRegistration, BackgroundTaskScope, BackgroundTaskState,
190 CodeOutputRecord, EmbeddedRuntimeBuilder, EmbeddedRuntimeHost, EventSink, ExecutionSummary,
191 FollowedTurn, InputItem, LashRuntime, LocalBackgroundTaskCancel, LocalBackgroundTaskHost,
192 ModeSessionExtension, ModeSessionExtensionHandle, ModeTurnExtension, ModeTurnExtensionHandle,
193 NoopEventSink, NoopTurnActivitySink, OutputState, ParkedSession, PersistedSessionState,
194 PromptUsage, Residency, RuntimeCoreConfig, RuntimeEnvironment, RuntimeEnvironmentBuilder,
195 RuntimeError, RuntimeHandle, RuntimeObservation, SessionStateEnvelope,
196 SessionStoreCreateRequest, SessionStoreFactory, SessionUsageReport, TerminationPolicy,
197 TokenLedgerEntry, TurnActivity, TurnActivityId, TurnActivitySink, TurnContext, TurnEvent,
198 TurnInput, TurnIssue, UsageReportRow, UsageTotals, diff_token_ledger, diff_usage_reports,
199};
200pub use runtime_controls::{BuiltinMonitorToolPluginFactory, BuiltinTaskControlsPluginFactory};
201pub use schemars::JsonSchema;
202pub use session::{
203 ExecRequest, InjectedTurnInput, ModeExecutionContext, ModeToolBatchItem, ModeToolReply,
204 Session, SessionError, TurnInjectionBridge, TurnInputInjectionBridge,
205};
206pub use session_graph::{
207 PersistedSessionConfig, PersistedTurnState, SessionGraph, SessionMessageTreeNode,
208 SessionNodePayload, SessionNodeRecord,
209};
210pub use session_model::context::PreparedContext;
211pub use session_model::{
212 ConversationRecord, ModeEvent, SessionEventRecord, StateSnapshotEvent, ToolEvent,
213};
214pub use session_model::{SessionPolicy, SessionSpec};
215pub use store::{
216 BlobRef, GcReport, GraphCommitDelta, HydratedSessionCheckpoint, PersistedSessionRead,
217 RuntimeCommit, RuntimeCommitResult, RuntimePersistence, SessionCheckpoint, SessionHead,
218 SessionHeadMeta, SessionMeta, SessionPickerInfo, SessionReadScope, StoreError, VacuumReport,
219 load_persisted_session_state, load_persisted_session_state_active_path,
220 refresh_persisted_session_state,
221};
222pub use tool_provider::{
223 ProgressSender, SandboxMessage, ToolCall, ToolContext, ToolProvider, ToolSessionControl,
224 ToolSessionModel, ToolTaskControl,
225};