thndrs_lib/core/providers/
opencode.rs1pub mod go;
4pub mod zen;
5
6pub use go::OpenCodeGoClient;
7
8use crate::providers::KnownModel;
9
10#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, PartialEq)]
12pub struct ModelsResponse {
13 pub object: String,
14 #[serde(default)]
15 pub data: Vec<ModelInfo>,
16}
17
18#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, PartialEq)]
20pub struct ModelInfo {
21 pub id: String,
22 pub object: String,
23 pub created: u64,
24 pub owned_by: String,
25}
26
27pub fn is_go_model_id(model: &str) -> bool {
29 go::is_model_id(model)
30}
31
32pub fn is_zen_model_id(model: &str) -> bool {
34 zen::is_model_id(model)
35}
36
37pub fn is_model_id(model: &str) -> bool {
39 is_go_model_id(model) || is_zen_model_id(model)
40}
41
42pub fn known_models() -> Vec<KnownModel> {
44 let mut models = zen::known_models();
45 models.extend(go::known_models());
46 models
47}
48
49pub fn validate_go_api_key(api_key: &str) -> std::result::Result<(), String> {
51 go::validate_api_key(api_key)
52}
53
54pub fn validate_zen_api_key(api_key: &str) -> std::result::Result<(), String> {
56 zen::validate_api_key(api_key)
57}
58
59pub fn probe_go_api_key(api_key: &str) -> crate::providers::Result<()> {
60 go::probe_api_key(api_key)
61}
62
63pub fn probe_zen_api_key(api_key: &str) -> crate::providers::Result<()> {
64 zen::probe_api_key(api_key)
65}