synth_ai_core/api/mod.rs
1//! Synth API client.
2//!
3//! This module provides a client for interacting with the Synth AI API.
4//!
5//! # Example
6//!
7//! ```ignore
8//! use synth_ai_core::api::{SynthClient, GepaJobRequest, PolicyConfig};
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//! let client = SynthClient::from_env()?;
13//!
14//! // Submit a GEPA job
15//! let job_id = client.jobs().submit_gepa(GepaJobRequest {
16//! container_url: "http://localhost:8000".into(),
17//! env_name: "default".into(),
18//! policy: PolicyConfig::default(),
19//! ..Default::default()
20//! }).await?;
21//!
22//! // Poll until complete
23//! let result = client.jobs().poll_until_complete(&job_id, 3600.0, 15.0).await?;
24//! println!("Best score: {:?}", result.best_score);
25//!
26//! Ok(())
27//! }
28//! ```
29
30pub mod client;
31pub mod eval;
32pub mod graph_evolve;
33pub mod graphs;
34pub mod inference;
35pub mod jobs;
36pub mod container;
37pub mod types;
38
39// Re-export main types for convenience
40pub use client::SynthClient;
41pub use eval::EvalClient;
42pub use graph_evolve::GraphEvolveClient;
43pub use graphs::{build_verifier_request, resolve_graph_job_id, GraphsClient};
44pub use inference::InferenceClient;
45pub use jobs::JobsClient;
46pub use container::ContainerDeployClient;
47pub use types::{
48 EvalJobRequest,
49 EvalJobStatus,
50 EvalResult,
51 GepaConfig,
52 // Request types
53 GepaJobRequest,
54 // Graph types
55 GraphCompletionRequest,
56 GraphCompletionResponse,
57 // Response types
58 JobSubmitResponse,
59 ContainerDeployResponse,
60 ContainerDeploySpec,
61 ContainerDeployStatus,
62 ContainerDeploymentInfo,
63 ContainerLimits,
64 MiproConfig,
65 MiproJobRequest,
66 // Config types
67 PolicyConfig,
68 // Job status
69 PolicyJobStatus,
70 PromptLearningResult,
71 RlmOptions,
72 Usage,
73 VerifierOptions,
74 VerifierResponse,
75};