1pub mod agent;
8pub mod audit;
9pub mod brain;
10pub mod browser;
11pub mod canvas;
12pub mod channels;
13pub mod config;
14pub mod council;
15pub mod credentials;
16pub mod encryption;
17pub mod error;
18pub mod explanation;
19pub mod gateway;
20pub mod indexer;
21pub mod injection;
22pub mod memory;
23pub mod merkle;
24pub mod metrics;
25pub mod multi;
26pub mod nodes;
27pub mod oauth;
28pub mod pairing;
29pub mod plan;
30pub mod project_detect;
31pub mod providers;
32pub mod replay;
33pub mod safety;
34pub mod sandbox;
35pub mod sanitize;
36pub mod scheduler;
37pub mod search;
38pub mod secret_ref;
39pub mod session_manager;
40pub mod skills;
41pub mod summarizer;
42pub mod types;
43pub mod updater;
44pub mod voice;
45pub mod workflow;
46
47pub use agent::{
49 Agent, AgentCallback, AgentMessage, BudgetSeverity, ContextHealthEvent, NoOpCallback,
50 RegisteredTool, TaskResult,
51};
52pub use brain::{Brain, LlmProvider, MockLlmProvider, TokenCounter};
53#[cfg(feature = "browser")]
54pub use browser::ChromiumCdpClient;
55pub use browser::{
56 BrowserSecurityGuard, BrowserSession, CdpClient, MockCdpClient, PageSnapshot, SnapshotMode,
57};
58pub use channels::cdc::{CdcAction, CdcConfig, CdcProcessor, CdcState};
59pub use channels::style_tracker::{CommunicationStyleTracker, SenderStyleProfile};
60pub use channels::{
61 AutoReplyEngine, Channel, ChannelAgentBridge, ChannelCapabilities, ChannelDigest,
62 ChannelManager, ChannelMessage, ChannelStatus, ChannelType, ChannelUser, ClassificationCache,
63 ClassifiedMessage, DigestActionItem, DigestCollector, DigestHighlight, EmailCategory,
64 EmailClassification, EmailIntelligence, FollowUpReminder, IMessageChannel, IMessageConfig,
65 IntelligenceResult, IrcChannel, IrcConfig, LlmClassificationResponse, MessageClassifier,
66 MessageContent, MessageId, MessageType, PendingReply, ReminderStatus, ReplyStatus,
67 ResolvedContact, SchedulerBridge, SenderProfile, SmsChannel, SmsConfig, StreamingMode,
68 SuggestedAction, TeamsChannel, TeamsConfig, ThreadId, WebhookChannel, WebhookConfig,
69};
70pub use config::MultiAgentConfig;
71pub use config::{
72 AgentConfig, ApprovalMode, CouncilConfig, CouncilMemberConfig, ExternalMcpServerConfig,
73 KnowledgeConfig, VotingStrategy, config_exists,
74};
75pub use config::{
76 AutoReplyMode, ChannelIntelligenceConfig, DigestFrequency, IntelligenceConfig,
77 MessagePriority as ChannelMessagePriority,
78};
79pub use council::{
80 CouncilMemberResponse, CouncilResult, DetectedProvider, PeerReview, PlanningCouncil,
81 detect_available_providers, should_use_council,
82};
83pub use plan::{
84 ExecutionPlan, PlanAlternative, PlanConfig, PlanDecision, PlanStatus, PlanStep, StepStatus,
85};
86pub use tokio_util::sync::CancellationToken;
87
88pub use credentials::{
89 CredentialError, CredentialStore, InMemoryCredentialStore, KeyringCredentialStore,
90};
91pub use encryption::{EncryptionError, SessionEncryptor};
92pub use error::BrowserError;
93pub use error::SchedulerError;
94pub use error::VoiceError;
95pub use error::{ChannelError, NodeError};
96pub use error::{Result, RustantError};
97pub use explanation::{DecisionExplanation, DecisionType, ExplanationBuilder, FactorInfluence};
98pub use gateway::{
99 ChannelBridge, ClientMessage, GatewayConfig, GatewayEvent, NodeBridge, ServerMessage,
100};
101pub use indexer::{IndexStats, IndexerConfig, ProjectIndexer};
102pub use injection::{
103 InjectionDetector, InjectionScanResult, InjectionType, Severity as InjectionSeverity,
104};
105pub use memory::{
106 BehavioralRule, ContextBreakdown, KnowledgeDistiller, KnowledgeStore, MemorySystem, Session,
107 SessionMetadata,
108};
109pub use merkle::{AuditNode, MerkleChain, VerificationResult};
110pub use multi::AgentStatus as MultiAgentStatus;
111pub use multi::{
112 AgentContext, AgentEnvelope, AgentOrchestrator, AgentPayload, AgentRoute, AgentRouter,
113 AgentSpawner, MessageBus, MessagePriority, ResourceLimits, TaskHandler,
114};
115pub use nodes::{
116 Capability, ConsentEntry, ConsentStore, DiscoveredNode, Node, NodeCapability, NodeDiscovery,
117 NodeHealth, NodeId, NodeManager, NodeMessage, NodeResult, NodeTask, Platform, RateLimit,
118};
119pub use oauth::AuthMethod;
120pub use pairing::{DeviceIdentity, PairingChallenge, PairingManager, PairingResult};
121pub use project_detect::{
122 ProjectInfo, ProjectType, detect_project, example_tasks, recommended_allowed_commands,
123};
124pub use providers::{
125 CircuitBreaker, CircuitState, FailoverProvider, GeminiProvider, ModelInfo,
126 create_council_members, create_provider, create_provider_with_auth,
127};
128pub use safety::{
129 AdaptiveTrust, ApprovalContext, ApprovalDecision, BehavioralFingerprint, ContractEnforcer,
130 Invariant, Predicate, ResourceBounds, ReversibilityInfo, SafetyContract, SafetyGuardian,
131 ToolRateLimiter,
132};
133pub use sandbox::SandboxedFs;
134pub use scheduler::{
135 BackgroundJob, CronJob, CronJobConfig, CronScheduler, HeartbeatConfig, HeartbeatManager,
136 JobManager, JobStatus, WebhookEndpoint, WebhookHandler,
137};
138pub use search::{HybridSearchEngine, SearchConfig, SearchResult};
139pub use secret_ref::{MigrationResult, SecretRef, SecretResolveError, SecretResolver};
140pub use session_manager::{SessionEntry, SessionIndex, SessionManager};
141pub use skills::{
142 ParseError as SkillParseError, SkillConfig, SkillDefinition, SkillLoader, SkillRegistry,
143 SkillRequirement, SkillRiskLevel, SkillToolDef, ValidationError, ValidationResult,
144 parse_skill_md, validate_skill,
145};
146pub use summarizer::{ContextSummarizer, ContextSummary, TokenAlert, TokenCostDisplay};
147pub use types::{
148 AgentState, AgentStatus, Artifact, CompletionRequest, CompletionResponse, Content,
149 CostEstimate, Message, ProgressUpdate, RiskLevel, Role, StreamEvent, TaskClassification,
150 TokenUsage, ToolDefinition, ToolOutput,
151};
152pub use voice::{
153 AudioChunk, AudioFormat, MeetingRecordingSession, MeetingResult, MeetingStatus,
154 MockSttProvider, MockTtsProvider, MockWakeDetector, OpenAiSttProvider, OpenAiTtsProvider,
155 SttProvider, SttWakeDetector, SynthesisRequest, SynthesisResult, ToggleState,
156 TranscriptionResult, TranscriptionSegment, TtsProvider, VadEvent, VoiceActivityDetector,
157 VoiceCommandSession, WakeWordDetector, audio_convert,
158};
159#[cfg(feature = "voice")]
160pub use voice::{
161 AudioInput, AudioOutput, PorcupineWakeDetector, VoicePipeline, VoicePipelineEvent,
162 WhisperLocalProvider,
163};
164pub use workflow::{
165 WorkflowDefinition, WorkflowExecutor, WorkflowState, WorkflowStatus, get_builtin,
166 list_builtin_names, parse_workflow, validate_workflow,
167};
168
169#[cfg(test)]
170mod reexport_tests {
171 use super::*;
172
173 #[test]
174 fn test_lib_new_reexports_channels() {
175 let _caps = ChannelCapabilities::default();
177 let _mode = StreamingMode::Polling { interval_ms: 1000 };
178 let _tid = ThreadId("thread-1".into());
179 let _bridge = ChannelBridge;
180
181 let _imessage_cfg = IMessageConfig::default();
183 let _teams_cfg = TeamsConfig::default();
184 let _sms_cfg = SmsConfig::default();
185 let _irc_cfg = IrcConfig::default();
186 let _webhook_cfg = WebhookConfig::default();
187 }
188
189 #[test]
190 fn test_lib_new_reexports_browser() {
191 let _guard = BrowserSecurityGuard::default();
193 let _mode = SnapshotMode::Html;
194 let _mock = MockCdpClient::new();
195 }
196
197 #[test]
198 fn test_lib_new_reexports_scheduler() {
199 let _scheduler = CronScheduler::new();
201 let _config = HeartbeatConfig::default();
202 let _manager = JobManager::new(10);
203 let _status = JobStatus::Pending;
204 let _endpoint = WebhookEndpoint::new("/hooks");
205 }
206
207 #[test]
208 fn test_lib_new_reexports_voice() {
209 let _vad = VoiceActivityDetector::new(0.01);
211 let _chunk = AudioChunk::silence(16000, 1, 480);
212 let _mock_stt = MockSttProvider::new();
213 let _mock_tts = MockTtsProvider::new();
214 let _format = AudioFormat::Wav;
215 let _req = SynthesisRequest::new("test");
216 let _event = VadEvent::NoChange;
217 }
218
219 #[test]
220 fn test_lib_new_reexports_nodes_multi() {
221 let _cap = NodeCapability::basic(Capability::Shell);
223 let _rl = RateLimit {
224 max_calls: 10,
225 window_secs: 60,
226 };
227 let _msg = NodeMessage::Ping;
228
229 let _limits = ResourceLimits::default();
231 let _prio = MessagePriority::Critical;
232 let _status = MultiAgentStatus::Idle;
233
234 let _nb = NodeBridge;
236 }
237}