Skip to main content

swink_agent/
lib.rs

1#![forbid(unsafe_code)]
2//! # Encapsulation regression
3//!
4//! The `credential` module is private; consumers must use the canonical
5//! re-exports at the crate root rather than reaching into submodule paths.
6//!
7//! ```compile_fail
8//! use swink_agent::credential::ResolvedCredential;
9//! ```
10mod agent;
11mod agent_id;
12pub(crate) mod agent_options;
13pub(crate) mod agent_subscriptions;
14#[cfg(feature = "artifact-store")]
15pub mod artifact;
16mod async_context_transformer;
17pub mod atomic_fs;
18pub(crate) mod block_accumulator;
19mod checkpoint;
20mod config;
21mod context;
22pub(crate) mod context_cache;
23mod context_transformer;
24mod context_version;
25pub(crate) mod convert;
26mod credential;
27pub(crate) mod display;
28mod emit;
29mod error;
30mod event_forwarder;
31mod fallback;
32mod fn_tool;
33mod handle;
34#[cfg(feature = "hot-reload")]
35pub mod hot_reload;
36mod loop_;
37pub(crate) mod message_provider;
38mod messaging;
39pub(crate) mod metrics;
40mod model_catalog;
41mod model_presets;
42mod noop_tool;
43mod orchestrator;
44#[cfg(feature = "otel")]
45pub mod otel;
46#[doc(hidden)]
47pub mod pause_state;
48#[cfg(feature = "plugins")]
49pub(crate) mod plugin;
50pub(crate) mod policy;
51mod registry;
52mod retry;
53mod schema;
54mod state;
55pub(crate) mod stream;
56pub mod stream_assembly;
57mod stream_error_kind;
58mod stream_middleware;
59mod sub_agent;
60mod task_core;
61#[cfg(feature = "tiktoken")]
62mod tiktoken_counter;
63pub(crate) mod tool;
64mod tool_execution_policy;
65pub(crate) mod tool_filter;
66mod tool_middleware;
67pub(crate) mod tools;
68pub(crate) mod transfer;
69pub(crate) mod types;
70mod util;
71
72#[cfg(feature = "testkit")]
73pub mod testing;
74
75pub mod prelude;
76
77// Re-exports
78pub use agent::{
79    Agent, AgentOptions, AgentState, DEFAULT_PLAN_MODE_ADDENDUM, FollowUpMode, SteeringMode,
80    SubscriptionId, default_convert,
81};
82pub use agent_id::AgentId;
83pub use async_context_transformer::{AsyncContextTransformer, AsyncTransformFuture};
84pub use checkpoint::{Checkpoint, CheckpointFuture, CheckpointStore, LoopCheckpoint};
85pub use config::{
86    AgentConfig, ApprovalModeConfig, CacheConfigData, FollowUpModeConfig, RetryConfig,
87    SteeringModeConfig, StreamOptionsConfig,
88};
89pub use context::CompactionReport;
90#[allow(deprecated)]
91pub use context::{
92    DefaultTokenCounter, TokenCounter, estimate_tokens, is_context_overflow, sliding_window,
93};
94pub use context_cache::{CacheConfig, CacheHint, CacheState};
95pub use context_transformer::{ContextTransformer, SlidingWindowTransformer};
96pub use context_version::{
97    ContextSummarizer, ContextVersion, ContextVersionMeta, ContextVersionStore,
98    InMemoryVersionStore, VersioningTransformer,
99};
100pub use convert::{MessageConverter, ToolSchema, convert_messages, extract_tool_schemas};
101pub use credential::{
102    AuthConfig, AuthScheme, Credential, CredentialError, CredentialFuture, CredentialResolver,
103    CredentialStore, CredentialType, ResolvedCredential,
104};
105pub use emit::Emission;
106pub use error::{AgentError, DowncastError};
107pub use event_forwarder::EventForwarderFn;
108pub use fallback::ModelFallback;
109pub use fn_tool::FnTool;
110pub use handle::{AgentHandle, AgentStatus};
111#[cfg(feature = "hot-reload")]
112pub use hot_reload::{ScriptTool, ToolWatcher};
113pub use loop_::{AgentEvent, AgentLoopConfig, TurnEndReason, agent_loop, agent_loop_continue};
114pub use message_provider::{
115    ChannelMessageProvider, ComposedMessageProvider, MessageProvider, MessageSender, from_fns,
116    message_channel,
117};
118pub use messaging::{AgentMailbox, send_to};
119pub use metrics::{MetricsCollector, MetricsFuture, ToolExecMetrics, TurnMetrics};
120pub use model_catalog::{
121    ApiVersion, AuthMode, CatalogPreset, ModelCatalog, PresetCapability, PresetCatalog,
122    PresetStatus, ProviderCatalog, ProviderKind, calculate_cost, model_catalog,
123};
124pub use model_presets::{ModelConnection, ModelConnections, ModelConnectionsBuilder};
125pub use noop_tool::NoopTool;
126pub use orchestrator::{
127    AgentOrchestrator, AgentRequest, DefaultSupervisor, OrchestratedHandle, SupervisorAction,
128    SupervisorPolicy,
129};
130#[cfg(feature = "otel")]
131pub use otel::{OtelInitConfig, init_otel_layer};
132pub use registry::{AgentRef, AgentRegistry};
133pub use retry::{DefaultRetryStrategy, RetryStrategy};
134pub use schema::schema_for;
135pub use schemars::JsonSchema;
136pub use state::{SessionState, StateDelta};
137pub use stream::{
138    AssistantMessageDelta, AssistantMessageEvent, CacheStrategy, OnRawPayload, StreamErrorKind,
139    StreamFn, StreamOptions, StreamTransport, accumulate_message, sanitize_incomplete_tool_calls,
140};
141pub use stream_middleware::StreamMiddleware;
142pub use sub_agent::SubAgent;
143#[cfg(feature = "tiktoken")]
144pub use tiktoken_counter::{TiktokenCounter, TiktokenError};
145pub use tool::{
146    AgentTool, AgentToolResult, ApprovalMode, IntoTool, ToolApproval, ToolApprovalRequest,
147    ToolFuture, ToolMetadata, ToolParameters, redact_sensitive_values, selective_approve,
148    unknown_tool_result, validate_schema, validate_tool_arguments, validation_error_result,
149};
150pub use tool_execution_policy::{
151    PriorityFn, ToolCallSummary, ToolExecutionPolicy, ToolExecutionStrategy,
152    ToolExecutionStrategyFuture,
153};
154pub use tool_filter::{ToolFilter, ToolPattern};
155pub use tool_middleware::ToolMiddleware;
156#[cfg(feature = "builtin-tools")]
157pub use tools::{BashTool, EditFileTool, ReadFileTool, WriteFileTool, builtin_tools};
158#[cfg(feature = "artifact-tools")]
159pub use tools::{ListArtifactsTool, LoadArtifactTool, SaveArtifactTool, artifact_tools};
160pub use types::{
161    AgentContext, AgentMessage, AgentResult, AssistantMessage, ContentBlock, Cost, CustomMessage,
162    CustomMessageRegistry, ImageSource, LlmMessage, MessageSlot, ModelCapabilities, ModelSpec,
163    SerializedCustomMessage, SerializedMessages, StopReason, ThinkingBudgets, ThinkingLevel,
164    ToolResultMessage, TurnSnapshot, Usage, UserMessage, clone_messages_for_send,
165    deserialize_custom_message, restore_messages, restore_single_custom, serialize_custom_message,
166    serialize_messages,
167};
168pub use util::{now_timestamp, prefix_chars, suffix_chars};
169
170#[cfg(feature = "artifact-store")]
171pub use artifact::{
172    ArtifactByteStream, ArtifactData, ArtifactError, ArtifactMeta, ArtifactStore, ArtifactVersion,
173    StreamingArtifactStore, validate_artifact_name, validate_session_id,
174};
175pub use display::{CoreDisplayMessage, DisplayRole, IntoDisplayMessages};
176#[cfg(feature = "plugins")]
177pub use plugin::{NamespacedTool, Plugin, PluginRegistry};
178pub use policy::{
179    PolicyContext, PolicyVerdict, PostLoopPolicy, PostTurnPolicy, PreDispatchPolicy,
180    PreDispatchVerdict, PreTurnPolicy, ToolDispatchContext, TurnPolicyContext, run_policies,
181    run_post_loop_policies, run_post_turn_policies, run_pre_dispatch_policies,
182};
183#[cfg(feature = "transfer")]
184pub use transfer::{TransferChain, TransferError, TransferSignal, TransferToAgentTool};