1pub mod credential_schema;
22pub mod driver_helpers;
23pub mod driver_registry;
24pub mod error;
25pub mod execution_phase;
26pub mod llm_retry;
27pub mod model;
28pub mod model_discovery;
29pub mod model_profiles;
30pub mod model_spec;
31pub mod openai_protocol;
32pub mod openresponses_protocol;
33pub mod openresponses_types;
34pub mod provider;
35pub mod runtime_provider;
36pub mod stream_accumulator;
37pub mod stream_reconnect;
38pub mod tool_schema_compat;
39pub mod tool_types;
40pub mod typed_id;
41pub mod url_validation;
42pub mod user_facing_error;
43
44pub use credential_schema::{
53 CredentialFormSchema, assemble_credential_document, parse_credential_document,
54};
55pub use driver_registry::{
56 BoxedChatDriver, BoxedEmbeddingsDriver, ChatDriver, DiscoveredModel, DriverDescriptor,
57 DriverFactory, DriverId, DriverOAuthConfig, DriverOAuthFlow, DriverRegistry, EmbedRequest,
58 EmbedResponse, EmbeddingsDriver, EmbeddingsDriverError, EmbeddingsDriverFactory, LlmCallConfig,
59 LlmCallConfigBuilder, LlmCompletionMetadata, LlmContentPart, LlmMessage, LlmMessageContent,
60 LlmMessageRole, LlmResponse, LlmResponseStream, LlmStreamError, LlmStreamEvent, ProviderConfig,
61 ProviderMetadata, ProviderOpaqueContext, ServiceKind, fold_system_messages,
62};
63pub use error::{
64 AgentLoopError, FileSystemError, FileSystemErrorClass, LlmError, LlmErrorKind, Result,
65 StoreResultExt, classify_fs_error, from_json, json_val,
66};
67pub use execution_phase::ExecutionPhase;
68pub use llm_retry::{LlmRetryConfig, RateLimitInfo, RateLimitType, RetryMetadata};
69pub use model::{
70 CostTier, Modality, Model, ModelCost, ModelLimits, ModelModalities, ModelProfile, ModelSource,
71 ModelVendor, ModelWithProvider, ReasoningEffort, ReasoningEffortConfig, ReasoningEffortValue,
72};
73pub use model_discovery::{
74 DiscoveredProviderModel, ModelSearchMatch, ModelSearchResult, RankedDiscoveredModels,
75 discover_provider_models, enrich_with_profiles, list_openai_compatible_models, match_models,
76 normalize_and_enrich, rank_discovered_models, search_provider_models,
77};
78pub use model_profiles::{get_model_profile, get_model_vendor};
79pub use model_spec::{ModelSpec, UnknownProvider};
80pub use openai_protocol::OpenAIProtocolChatDriver;
81pub use openresponses_protocol::{
82 CompactContent, CompactContentPart, CompactInputItem, CompactOutputItem, CompactRequest,
83 CompactResponse, CompactUsage, OpenResponsesProtocolChatDriver, OpenResponsesRequestExtension,
84 messages_to_compact_input,
85};
86pub use provider::{Provider as ProviderRecord, ProviderStatus, ProviderTraceConfig};
87pub use runtime_provider::{
88 BearerAuth, Provider, ProviderAuth, ProviderAuthRequest, ProviderEndpoint, ProviderKey,
89 ProviderRegistry, ResolvedProviderRequest, RuntimeProvider, RuntimeProviderRegistry,
90 StaticHeaderAuth,
91};
92pub use tool_types::{
93 BuiltinTool, ClientSideTool, DeferrablePolicy, SideEffectClass, ToolCall, ToolDefinition,
94 ToolHints, ToolPolicy, ToolResult, ToolResultImage,
95};
96pub use url_validation::{
97 UrlValidationError, is_blocked_ip, validate_safe_url, validate_url_dns_pinned,
98};
99pub use user_facing_error::{
100 ErrorDisclosure, UserFacingError, UserFacingErrorContext, UserFacingErrorFields,
101 classify_runtime_error_message, codes as user_facing_error_codes, is_provider_quota_message,
102 is_usage_limit_message, metadata_keys as user_facing_error_metadata_keys,
103 parse_usage_limit_reset_at, trim_error_chain_prefixes,
104};