1pub use tokn_core::provider;
2
3pub mod chat;
4pub mod error;
5pub mod ir;
6pub mod messages;
7pub mod responses;
8pub mod sse;
9pub mod tools;
10pub mod usage;
11
12use crate::provider::Endpoint;
13use serde_json::Value;
14
15pub use error::Result;
16
17pub fn convert_request(from: Endpoint, to: Endpoint, body: &Value) -> Result<Value> {
18 if from == to {
19 return Ok(body.clone());
20 }
21 let req = match from {
22 Endpoint::ChatCompletions => chat::request_from_value(body)?,
23 Endpoint::Responses => responses::request_from_value(body)?,
24 Endpoint::Messages => messages::request_from_value(body)?,
25 };
26 match to {
27 Endpoint::ChatCompletions => chat::request_to_value(&req),
28 Endpoint::Responses => responses::request_to_value(&req),
29 Endpoint::Messages => messages::request_to_value(&req),
30 }
31}
32
33pub fn convert_response(from: Endpoint, to: Endpoint, body: &Value) -> Result<Value> {
34 if from == to {
35 return Ok(body.clone());
36 }
37 let resp = match from {
38 Endpoint::ChatCompletions => chat::response_from_value(body)?,
39 Endpoint::Responses => responses::response_from_value(body)?,
40 Endpoint::Messages => messages::response_from_value(body)?,
41 };
42 match to {
43 Endpoint::ChatCompletions => chat::response_to_value(&resp),
44 Endpoint::Responses => responses::response_to_value(&resp),
45 Endpoint::Messages => messages::response_to_value(&resp),
46 }
47}