feat: render cli live outputs

This commit is contained in:
Evandro Fonseca Junior committed 2026-03-26 20:07:36 -03:00
1 parent 9435b208ac
commit 1501d2388a
1 file changed
+78 -2
+78 -2
View File
@@ -445,8 +445,84 @@ fn render_execution_preview(cli: &Cli) -> String {
}
}
fn render_backend_response(cli: &Cli, _status_code: u16, _body: &str) -> String {
format!("LIVE {}", render_command_summary(cli))
fn render_backend_response(cli: &Cli, status_code: u16, body: &str) -> String {
let preview = backend_response_preview(cli, status_code, body);
match (cli.format, preview) {
(OutputFormat::Text, BackendResponsePreview::SummaryOnly { command }) => {
format!("LIVE {}", command)
}
(
OutputFormat::Text,
BackendResponsePreview::Health {
status,
model_loaded,
model_id,
uptime_secs,
},
) => format!(
"STATUS status={} model_loaded={} model_id={} uptime_secs={}",
status,
model_loaded,
model_id.unwrap_or_else(|| "none".to_owned()),
uptime_secs
),
(OutputFormat::Text, BackendResponsePreview::Models { count, ids }) => {
format!("MODELS count={} ids={}", count, ids.join(","))
}
(
OutputFormat::Text,
BackendResponsePreview::Throughput {
model,
total_tokens,
tokens_per_second,
},
) => format!(
"THROUGHPUT model={} total_tokens={} tokens_per_second={}",
model, total_tokens, tokens_per_second
),
(OutputFormat::Json, BackendResponsePreview::SummaryOnly { command }) => {
format!(r#"{{"kind":"summary","command":"{}"}}"#, command)
}
(
OutputFormat::Json,
BackendResponsePreview::Health {
status,
model_loaded,
model_id,
uptime_secs,
},
) => format!(
r#"{{"kind":"health","status":"{}","model_loaded":{},"model_id":{},"uptime_secs":{}}}"#,
status,
model_loaded,
render_json_optional_string(model_id.as_deref()),
uptime_secs
),
(OutputFormat::Json, BackendResponsePreview::Models { count, ids }) => format!(
r#"{{"kind":"models","count":{},"ids":{}}}"#,
count,
serde_json::to_string(&ids).unwrap_or_else(|_| "[]".to_owned())
),
(
OutputFormat::Json,
BackendResponsePreview::Throughput {
model,
total_tokens,
tokens_per_second,
},
) => format!(
r#"{{"kind":"throughput","model":"{}","total_tokens":{},"tokens_per_second":{}}}"#,
model, total_tokens, tokens_per_second
),
}
}
fn render_json_optional_string(value: Option<&str>) -> String {
match value {
Some(value) => format!(r#""{}""#, value),
None => "null".to_owned(),
}
}
fn render_json_body(body: Option<&str>) -> String {