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