smos_application/types/mod.rs
1//! Transport / DTO types used at port boundaries.
2//!
3//! These types live in the application layer (not domain) because they model
4//! the *wire* shape — OpenAI-compatible chat envelopes, vector-search hits,
5//! rerank responses — rather than the invariants the domain layer enforces.
6
7pub mod chat_request;
8pub mod chat_response;
9pub mod enrichment_messages;
10pub mod merge_result;
11pub mod rerank_result;
12pub mod search_hit;
13
14pub use chat_request::ChatRequest;
15pub use chat_response::ChatResponse;
16pub use enrichment_messages::{
17 ChatMessageDto, ContentPart, EnrichmentMessages, MessageContent, ToolCallDto, ToolCallFunction,
18 enrichment_messages_from_json, enrichment_messages_to_json,
19};
20pub use merge_result::MergeResult;
21pub use rerank_result::RerankResult;
22pub use search_hit::{SearchHit, SearchHitMetadata};
23
24// NLI types are pure domain value objects, so `NliResult`/`NliScores` live in
25// `smos-domain::value_objects::nli` and are re-exported here so callers have a
26// single import path through the application layer.
27pub use smos_domain::{NliResult, NliScores};
28
29// `MergeCandidate` is similarly defined in the domain (`entities::fact`). It is
30// re-exported here for ergonomic single-source imports; the domain remains its
31// canonical home.
32pub use smos_domain::entities::MergeCandidate;