Skip to main content

siumai_bridge/
lib.rs

1//! Protocol bridge helpers.
2//!
3//! This crate owns gateway/protocol conversion code that can be consumed by
4//! both the `siumai` facade and `siumai-extras` without moving provider-specific
5//! bridge logic into `siumai-core` or creating a facade/extras dependency cycle.
6//!
7//! The current focus is explicit request bridging with reusable internal
8//! structure:
9//!
10//! - planner
11//! - request primitives
12//! - request pair modules
13//! - request inspection
14//! - request serialization
15//! - response inspection / serialization
16//! - stream inspection / serialization
17
18mod contracts;
19mod customize;
20mod lifecycle;
21pub mod planner;
22pub mod request;
23pub mod response;
24pub mod stream;
25mod target_dispatch;
26mod wrapper_macros;
27
28pub use contracts::*;
29pub use customize::{ProviderToolRewriteCustomization, ProviderToolRewriteRule};
30pub use planner::{RequestBridgePath, RequestBridgePlan, plan_chat_request_bridge};
31pub use request::{
32    bridge_chat_request_to_json, bridge_chat_request_to_json_with_options,
33    inspect_chat_request_bridge,
34};
35pub use response::{
36    bridge_chat_response_to_json_bytes, bridge_chat_response_to_json_bytes_with_options,
37    bridge_chat_response_to_json_value, bridge_chat_response_to_json_value_with_options,
38    inspect_chat_response_bridge,
39};
40pub use stream::{
41    bridge_chat_stream_to_bytes, bridge_chat_stream_to_bytes_with_options,
42    inspect_chat_stream_bridge, transform_chat_stream_with_bridge_options,
43};
44
45#[cfg(feature = "anthropic")]
46pub use request::{
47    bridge_anthropic_messages_json_to_chat_request,
48    bridge_anthropic_messages_json_to_chat_request_with_options,
49    bridge_chat_request_to_anthropic_messages_json,
50    bridge_chat_request_to_anthropic_messages_json_with_options,
51};
52#[cfg(any(feature = "google", feature = "google-vertex"))]
53pub use request::{
54    bridge_chat_request_to_gemini_generate_content_json,
55    bridge_chat_request_to_gemini_generate_content_json_with_options,
56    bridge_gemini_generate_content_json_to_chat_request,
57    bridge_gemini_generate_content_json_to_chat_request_with_options,
58};
59#[cfg(feature = "openai")]
60pub use request::{
61    bridge_chat_request_to_openai_chat_completions_json,
62    bridge_chat_request_to_openai_chat_completions_json_with_options,
63    bridge_chat_request_to_openai_responses_json,
64    bridge_chat_request_to_openai_responses_json_with_options,
65    bridge_openai_chat_completions_json_to_chat_request,
66    bridge_openai_chat_completions_json_to_chat_request_with_options,
67    bridge_openai_responses_json_to_chat_request,
68    bridge_openai_responses_json_to_chat_request_with_options,
69};
70#[cfg(feature = "anthropic")]
71pub use response::{
72    bridge_chat_response_to_anthropic_messages_json_bytes,
73    bridge_chat_response_to_anthropic_messages_json_bytes_with_options,
74    bridge_chat_response_to_anthropic_messages_json_value,
75    bridge_chat_response_to_anthropic_messages_json_value_with_options,
76};
77#[cfg(any(feature = "google", feature = "google-vertex"))]
78pub use response::{
79    bridge_chat_response_to_gemini_generate_content_json_bytes,
80    bridge_chat_response_to_gemini_generate_content_json_bytes_with_options,
81    bridge_chat_response_to_gemini_generate_content_json_value,
82    bridge_chat_response_to_gemini_generate_content_json_value_with_options,
83};
84#[cfg(feature = "openai")]
85pub use response::{
86    bridge_chat_response_to_openai_chat_completions_json_bytes,
87    bridge_chat_response_to_openai_chat_completions_json_bytes_with_options,
88    bridge_chat_response_to_openai_chat_completions_json_value,
89    bridge_chat_response_to_openai_chat_completions_json_value_with_options,
90    bridge_chat_response_to_openai_responses_json_bytes,
91    bridge_chat_response_to_openai_responses_json_bytes_with_options,
92    bridge_chat_response_to_openai_responses_json_value,
93    bridge_chat_response_to_openai_responses_json_value_with_options,
94};
95#[cfg(feature = "anthropic")]
96pub use stream::{
97    bridge_chat_stream_to_anthropic_messages_sse,
98    bridge_chat_stream_to_anthropic_messages_sse_with_options,
99};
100#[cfg(any(feature = "google", feature = "google-vertex"))]
101pub use stream::{
102    bridge_chat_stream_to_gemini_generate_content_sse,
103    bridge_chat_stream_to_gemini_generate_content_sse_with_options,
104};
105#[cfg(feature = "openai")]
106pub use stream::{
107    bridge_chat_stream_to_openai_chat_completions_sse,
108    bridge_chat_stream_to_openai_chat_completions_sse_with_options,
109    bridge_chat_stream_to_openai_responses_sse,
110    bridge_chat_stream_to_openai_responses_sse_with_options,
111};