use crate::config::ResolvedContext;
use crate::error::CliError;
use super::models::SessionTrace;
use super::wire::WireTraceResponse;
pub fn build_trace_url(ctx: &ResolvedContext, session_id: &str) -> String {
format!("{}/api/v1/traces/{}", ctx.api_url.trim_end_matches('/'), session_id)
}
pub async fn fetch_trace(ctx: &ResolvedContext, session_id: &str) -> Result<SessionTrace, CliError> {
let url = build_trace_url(ctx, session_id);
let client = reqwest::Client::new();
let mut request = client.get(&url);
if let Some(ref key) = ctx.api_key {
request = request.bearer_auth(key);
}
let response = request.send().await?.error_for_status()?;
let wire: WireTraceResponse = response.json().await?;
Ok(SessionTrace::from(wire))
}