use letta::client::{ClientConfig, LettaClient};
use letta::error::LettaResult;
fn get_test_client() -> LettaResult<LettaClient> {
let config = ClientConfig::new("http://localhost:8283")?;
LettaClient::new(config)
}
#[tokio::test]
async fn test_retrieve_provider_trace() -> LettaResult<()> {
let client = get_test_client()?;
let fake_step_id = "step-00000000-0000-0000-0000-000000000000";
let result = client
.telemetry()
.retrieve_provider_trace(fake_step_id)
.await;
match result {
Err(letta::error::LettaError::NotFound { resource_type, id }) => {
println!("Expected NotFound error for non-existent step");
println!("Resource type: {}, ID: {}", resource_type, id);
assert_eq!(resource_type, "ProviderTrace");
Ok(())
}
Err(letta::error::LettaError::Api { status: 404, .. }) => {
println!("Got 404 API error (alternative match)");
Ok(())
}
Err(e) => {
panic!("Unexpected error: {:?}", e);
}
Ok(trace) => {
panic!("Expected 404 error but got trace: {:?}", trace);
}
}
}
#[tokio::test]
#[ignore = "requires a valid step_id from actual runs"]
async fn test_retrieve_provider_trace_with_valid_step() -> LettaResult<()> {
let client = get_test_client()?;
let step_id = "REPLACE_WITH_ACTUAL_STEP_ID";
let trace = client.telemetry().retrieve_provider_trace(step_id).await?;
println!("Retrieved trace: {:?}", trace);
assert!(trace.request_json.is_object() || trace.request_json.is_null());
assert!(trace.response_json.is_object() || trace.response_json.is_null());
if let Some(returned_step_id) = &trace.step_id {
assert_eq!(returned_step_id, step_id);
}
Ok(())
}