#![deny(unsafe_code)]
pub mod channel;
pub mod character;
pub mod error;
pub mod error_classifier;
pub mod instrumenter;
pub mod journal;
pub mod native;
pub mod ports;
pub mod resilience;
pub mod secrets;
pub mod tape;
pub mod tool_policy;
pub mod typed_tool;
pub mod types;
pub use character::Character;
pub use error::{AgentError, CostError, LlmError, StoreError, ToolError};
pub use error_classifier::{
FailoverConfig, FailoverResult, classify_agent_error, classify_llm_error,
};
pub use instrumenter::{
Instrumenter, ModelErrorInfo, ModelRequestInfo, ModelResponseInfo, NoopInstrumenter,
OutputValidationErrorInfo, RunEndInfo, RunErrorInfo, RunStartInfo, ToolCallInfo,
ToolDiscoveredInfo, ToolEndInfo, ToolErrorInfo,
};
pub use journal::{JournalEntry, ToolJournalPort};
pub use native::{NativeLlmPort, NativeSessionStore, NativeToolPort};
pub use ports::{
AccessControlPort, ActivityJournalPort, ApprovalPort, ArtifactStorePort, CostMeterPort,
EventSink, LlmPort, MessageBusPort, SessionStore, SubagentPort, TapeStorePort, ToolCatalogPort,
ToolExecutorPort, ToolPolicyPort, ToolPort, TurnCheckpointStorePort,
};
pub use resilience::{
CircuitBreaker, CircuitBreakerConfig, CircuitBreakerError, CircuitState, ComponentHealth,
HealthStatus, RetryConfig,
};
pub use tool_policy::{
intersect_allowlists, is_tool_allowed, merge_allowlists, normalize_tool_list, tools_match,
};
pub use typed_tool::{
ChainedToolPorts, Complete, Described, FilteredToolPort, Incomplete, ToolKind, ToolPortExt,
ToolSource, TypedToolAdapter, TypedToolBuilder, TypedToolExt, TypedToolPort,
};
pub use types::*;