Skip to main content

lc_shared/
lib.rs

1#![warn(missing_docs)]
2// lc-shared/src/lib.rs
3//! Shared types for the langchainrust workspace.
4//!
5//! This crate contains types that are needed by multiple sub-crates,
6//! breaking circular dependencies:
7//!
8//! - **Tool types** (`ToolCall`, `FunctionCall`, `ToolCallResult`): needed by
9//!   both `lc-schema` (Message uses ToolCall) and `lc-core` (tool definitions).
10//!
11//! - **Document types** (`Document`, `VectorDocument`, `SearchResult`, `ChunkDocument`):
12//!   needed by both `lc-vector-stores` and `lc-rag`.
13//!
14//! - **Splitter types** (`TextSplitter`, `RecursiveCharacterSplitter`):
15//!   needed by both `lc-vector-stores` and `lc-rag`.
16
17/// Document types: `Document`, `VectorDocument`, `SearchResult`, `ChunkDocument`.
18pub mod document {
19    pub use crate::document_types::{ChunkDocument, Document, SearchResult, VectorDocument};
20}
21
22/// Splitter types: `TextSplitter`, `RecursiveCharacterSplitter`.
23pub mod splitter {
24    pub use crate::splitter_types::{RecursiveCharacterSplitter, TextSplitter};
25}
26
27/// Tool types: `ToolCall`, `FunctionCall`, `ToolCallResult`.
28pub mod tools {
29    pub use crate::tool_types::{FunctionCall, ToolCall, ToolCallBuilder, ToolCallResult};
30}
31
32// Tolerant JSON repair — sinks the LLM-JSON repair pipeline from lc-core so
33// that `ToolCall::parse_arguments` (in this crate) shares a single tolerant
34// parser with lc-core's `json_parse` instead of duplicating strict parsing.
35pub mod json_repair;
36
37// Flat re-exports for convenience
38pub use document_types::{ChunkDocument, Document, SearchResult, VectorDocument};
39pub use json_repair::{parse_tolerant_json, repair_json, JsonRepairError};
40pub use splitter_types::{RecursiveCharacterSplitter, TextSplitter};
41pub use tool_types::{FunctionCall, ToolCall, ToolCallBuilder, ToolCallResult};
42
43mod document_types;
44mod splitter_types;
45mod tool_types;