1#![forbid(unsafe_code)]
81#![warn(missing_docs)]
82
83mod client;
84mod collections;
87mod containers;
88mod default_style;
89mod error;
90pub mod verification;
91
92#[cfg(kani)]
93mod kani_tests;
94
95#[cfg(feature = "cli")]
96pub mod cli;
97
98pub mod contracts;
99pub mod mcp;
100mod paradigm;
101mod primitives;
102pub mod style;
103pub mod tool;
104mod traits;
105
106#[cfg(feature = "serde_json")]
107mod value_impl;
108
109#[cfg(any(feature = "chrono", feature = "time", feature = "jiff"))]
110mod datetime_common;
111
112#[cfg(feature = "chrono")]
113pub mod datetime_chrono;
114
115#[cfg(feature = "time")]
116pub mod datetime_time;
117
118#[cfg(feature = "jiff")]
119pub mod datetime_jiff;
120
121mod elicitation_style;
122
123pub use error::{ElicitError, ElicitErrorKind, ElicitResult, JsonError, RmcpError, ServiceError};
125
126pub use client::ElicitClient;
128
129pub use elicitation_style::ElicitationStyle;
131pub use traits::{ElicitBuilder, Elicitation, Generator, Prompt};
132
133pub use contracts::{
135 And, Established, Implies, InVariant, Is, Prop, Refines, both, downcast, fst, snd,
136};
137
138pub use tool::{Tool, True, both_tools, then};
140
141pub use paradigm::{Affirm, Authorize, FieldInfo, Select, Survey};
143
144pub use rmcp;
146
147pub use elicitation_derive::Elicit;
149
150#[cfg(any(feature = "verification", kani))]
153pub use verification::types::{
154 ArcNonNull,
155 ArcSatisfies,
156 ArrayAllSatisfy,
157 BTreeMapNonEmpty,
158 BTreeSetNonEmpty,
159 BoolFalse,
160 BoolTrue,
162 BoxNonNull,
163 BoxSatisfies,
164 CharAlphabetic,
166 CharAlphanumeric,
167 CharNumeric,
168 DurationNonZero,
169 DurationPositive,
171 F32Finite,
172 F32NonNegative,
173 F32Positive,
175 F64Finite,
176 F64NonNegative,
177 F64Positive,
178 HashMapNonEmpty,
179 HashSetNonEmpty,
180 I8NonNegative,
181 I8NonZero,
182 I8NonZeroStyle,
183 I8Positive,
185 I8Range,
186 I8RangeStyle,
187 I16NonNegative,
188 I16NonZero,
189 I16NonZeroStyle,
190 I16Positive,
192 I16Range,
193 I16RangeStyle,
194 I32NonNegative,
195 I32NonZero,
196 I32Positive,
198 I32Range,
199 I32RangeStyle,
200 I64NonNegative,
201 I64NonZero,
202 I64Positive,
204 I64Range,
205 I64RangeStyle,
206 I128NonNegative,
207 I128NonZero,
208 I128Positive,
210 I128Range,
211 I128RangeStyle,
212 IpPrivate,
214 IpPublic,
215 IpV4,
216 IpV6,
217 Ipv4Loopback,
218 Ipv6Loopback,
219 IsizeNonNegative,
220 IsizeNonZero,
221 IsizePositive,
223 IsizeRange,
224 IsizeRangeStyle,
225 LinkedListNonEmpty,
226 OptionSome,
227 PathBufExists,
229 PathBufIsDir,
230 PathBufIsFile,
231 PathBufReadable,
232 RcNonNull,
233 RcSatisfies,
234 ResultOk,
235 StringNonEmpty,
237 Tuple2,
239 Tuple3,
240 Tuple4,
241 U8NonZero,
242 U8Positive,
244 U8Range,
245 U8RangeStyle,
246 U16NonZero,
247 U16Positive,
249 U16Range,
250 U16RangeStyle,
251 U32NonZero,
252 U32Positive,
254 U32Range,
255 U32RangeStyle,
256 U64NonZero,
257 U64Positive,
259 U64Range,
260 U64RangeStyle,
261 U128NonZero,
262 U128Positive,
264 U128Range,
265 U128RangeStyle,
266 UsizeNonZero,
267 UsizePositive,
269 UsizeRange,
270 UsizeRangeStyle,
271 ValidationError,
273 VecAllSatisfy,
274 VecDequeNonEmpty,
275 VecNonEmpty,
277};
278
279#[cfg(all(any(feature = "verification", kani), feature = "uuid"))]
281pub use verification::types::{UuidNonNil, UuidV4};
282
283#[cfg(feature = "uuid")]
284pub use primitives::uuid::{UuidGenerationMode, UuidGenerator};
285
286pub use primitives::systemtime::{SystemTimeGenerationMode, SystemTimeGenerator};
288
289pub use primitives::duration::{DurationGenerationMode, DurationGenerator};
291
292pub use primitives::unit_structs::{Formatter, Parser, Validator};
294
295pub use primitives::errors::{IoErrorGenerationMode, IoErrorGenerator};
297
298#[cfg(feature = "serde_json")]
299pub use primitives::errors::{JsonErrorGenerationMode, JsonErrorGenerator};
300
301#[cfg(feature = "chrono")]
303pub use datetime_chrono::{
304 DateTimeUtcGenerationMode, DateTimeUtcGenerator, NaiveDateTimeGenerationMode,
305 NaiveDateTimeGenerator,
306};
307
308#[cfg(feature = "time")]
309pub use datetime_time::{
310 InstantGenerationMode, InstantGenerator, OffsetDateTimeGenerationMode, OffsetDateTimeGenerator,
311};
312
313#[cfg(feature = "jiff")]
314pub use datetime_jiff::{TimestampGenerationMode, TimestampGenerator};
315
316#[cfg(all(any(feature = "verification", kani), feature = "chrono"))]
318pub use verification::types::{DateTimeUtcAfter, DateTimeUtcBefore, NaiveDateTimeAfter};
319
320#[cfg(all(any(feature = "verification", kani), feature = "time"))]
321pub use verification::types::{OffsetDateTimeAfter, OffsetDateTimeBefore};
322
323#[cfg(all(any(feature = "verification", kani), feature = "jiff"))]
324pub use verification::types::{TimestampAfter, TimestampBefore};
325
326#[cfg(all(any(feature = "verification", kani), feature = "serde_json"))]
328pub use verification::types::{ValueArray, ValueNonNull, ValueObject};
329
330#[cfg(all(any(feature = "verification", kani), feature = "url"))]
332pub use verification::types::{UrlCanBeBase, UrlHttp, UrlHttps, UrlValid, UrlWithHost};
333
334#[cfg(all(any(feature = "verification", kani), feature = "regex"))]
336pub use verification::types::{
337 RegexCaseInsensitive, RegexMultiline, RegexSetNonEmpty, RegexSetValid, RegexValid,
338};
339
340#[cfg(any(feature = "verification", kani))]
342pub use verification::mechanisms::{
343 AffirmReturnsBoolean, InputNonEmpty, MechanismWithType, NumericReturnsValid,
344 SurveyReturnsValidVariant, TextReturnsNonEmpty, TextReturnsString,
345};