Skip to main content

lc_shared/
lib.rs

1// lc-shared/src/lib.rs
2//! Shared types for the langchainrust workspace.
3//!
4//! This crate contains types that are needed by multiple sub-crates,
5//! breaking circular dependencies:
6//!
7//! - **Tool types** (`ToolCall`, `FunctionCall`, `ToolCallResult`): needed by
8//!   both `lc-schema` (Message uses ToolCall) and `lc-core` (tool definitions).
9//!
10//! - **Document types** (`Document`, `VectorDocument`, `SearchResult`, `ChunkDocument`):
11//!   needed by both `lc-vector-stores` and `lc-rag`.
12//!
13//! - **Splitter types** (`TextSplitter`, `RecursiveCharacterSplitter`):
14//!   needed by both `lc-vector-stores` and `lc-rag`.
15
16pub mod document {
17    pub use crate::document_types::{ChunkDocument, Document, SearchResult, VectorDocument};
18}
19
20pub mod splitter {
21    pub use crate::splitter_types::{
22        CharacterTextSplitter, RecursiveCharacterSplitter, TextSplitter,
23    };
24}
25
26pub mod tools {
27    pub use crate::tool_types::{FunctionCall, ToolCall, ToolCallResult};
28}
29
30// Flat re-exports for convenience
31pub use document_types::{ChunkDocument, Document, SearchResult, VectorDocument};
32pub use splitter_types::{CharacterTextSplitter, RecursiveCharacterSplitter, TextSplitter};
33pub use tool_types::{FunctionCall, ToolCall, ToolCallResult};
34
35mod document_types;
36mod splitter_types;
37mod tool_types;