MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / format_provenance

Method format_provenance

atomic-cli/src/commands/change/command.rs:535–594  ·  view source on GitHub ↗

Format AI provenance information for display.

(&self, prov: &Provenance)

Source from the content-addressed store, hash-verified

533
534 /// Format AI provenance information for display.
535 fn format_provenance(&self, prov: &Provenance) -> String {
536 let mut output = String::new();
537
538 output.push_str(&format!("{}\n", emphasis("AI Provenance:")));
539 output.push_str(&format!(
540 " Vendor: {}\n",
541 info(&format!("{:?}", prov.vendor))
542 ));
543 output.push_str(&format!(" Model: {}\n", info(&prov.model)));
544
545 if let Some(version) = &prov.model_version {
546 output.push_str(&format!(" Version: {}\n", hint(version)));
547 }
548
549 output.push_str(&format!(
550 " Tool: {}\n",
551 info(&format!("{:?}", prov.tool))
552 ));
553 output.push_str(&format!(
554 " Type: {}\n",
555 hint(&format!("{:?}", prov.suggestion_type))
556 ));
557
558 // Token usage
559 if !prov.tokens.is_empty() {
560 output.push_str(" Tokens:\n");
561 output.push_str(&format!(" Input: {}\n", prov.tokens.input_tokens));
562 output.push_str(&format!(" Output: {}\n", prov.tokens.output_tokens));
563 output.push_str(&format!(" Total: {}\n", prov.tokens.total_tokens));
564 }
565
566 // Cost
567 if !prov.cost.is_zero() {
568 output.push_str(&format!(" Cost: ${:.6} USD\n", prov.cost.usd));
569 }
570
571 // Temperature
572 if let Some(temp) = prov.temperature {
573 let temp_f = temp as f64 / 1000.0;
574 output.push_str(&format!(" Temp: {:.2}\n", temp_f));
575 }
576
577 // Request/Session IDs
578 if let Some(req_id) = &prov.request_id {
579 output.push_str(&format!(" Request: {}\n", hint(req_id)));
580 }
581 if let Some(sess_id) = &prov.session_id {
582 output.push_str(&format!(" Session: {}\n", hint(sess_id)));
583 }
584
585 // Additional metadata (key-value pairs from agent recording)
586 if !prov.metadata.is_empty() {
587 output.push_str(" Metadata:\n");
588 for (key, value) in &prov.metadata {
589 output.push_str(&format!(" {}: {}\n", hint(key), info(value)));
590 }
591 }
592

Callers 1

format_defaultMethod · 0.80

Calls 2

is_emptyMethod · 0.45
is_zeroMethod · 0.45

Tested by

no test coverage detected