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::{RecursiveCharacterSplitter, TextSplitter};
22}
23
24pub mod tools {
25    pub use crate::tool_types::{FunctionCall, ToolCall, ToolCallResult};
26}
27
28// Tolerant JSON repair — sinks the LLM-JSON repair pipeline from lc-core so
29// that `ToolCall::parse_arguments` (in this crate) shares a single tolerant
30// parser with lc-core's `json_parse` instead of duplicating strict parsing.
31pub mod json_repair;
32
33// Flat re-exports for convenience
34pub use document_types::{ChunkDocument, Document, SearchResult, VectorDocument};
35pub use json_repair::{parse_tolerant_json, repair_json, JsonRepairError};
36pub use splitter_types::{RecursiveCharacterSplitter, TextSplitter};
37pub use tool_types::{FunctionCall, ToolCall, ToolCallResult};
38
39mod document_types;
40mod splitter_types;
41mod tool_types;