From f2ad0d716f132e6e05545f3dd4a73f8765dc0fb3 Mon Sep 17 00:00:00 2001 From: Agus Zubiaga Date: Tue, 11 Nov 2025 09:56:20 -0300 Subject: [PATCH] zeta cli: Print log paths when running predict (#42396) Release Notes: - N/A Co-authored-by: Michael Sloan Co-authored-by: Ben Kunkle --- crates/zeta_cli/src/paths.rs | 8 ++++++++ crates/zeta_cli/src/predict.rs | 22 +++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/crates/zeta_cli/src/paths.rs b/crates/zeta_cli/src/paths.rs index 144bf6f5dd97c518d965d7bd23da83ce7f11f66f..fc7f8b3afc3dbcd724649749a58b76dbab275750 100644 --- a/crates/zeta_cli/src/paths.rs +++ b/crates/zeta_cli/src/paths.rs @@ -6,3 +6,11 @@ pub static CACHE_DIR: LazyLock = pub static REPOS_DIR: LazyLock = LazyLock::new(|| TARGET_DIR.join("zeta-repos")); pub static WORKTREES_DIR: LazyLock = LazyLock::new(|| TARGET_DIR.join("zeta-worktrees")); pub static LOGS_DIR: LazyLock = LazyLock::new(|| TARGET_DIR.join("zeta-logs")); +pub static LOGS_SEARCH_PROMPT: LazyLock = + LazyLock::new(|| LOGS_DIR.join("search_prompt.md")); +pub static LOGS_SEARCH_QUERIES: LazyLock = + LazyLock::new(|| LOGS_DIR.join("search_queries.json")); +pub static LOGS_PREDICTION_PROMPT: LazyLock = + LazyLock::new(|| LOGS_DIR.join("prediction_prompt.md")); +pub static LOGS_PREDICTION_RESPONSE: LazyLock = + LazyLock::new(|| LOGS_DIR.join("prediction_response.md")); diff --git a/crates/zeta_cli/src/predict.rs b/crates/zeta_cli/src/predict.rs index 4efc82fa8a7c5d5cf6773a7f771d12dd89b4e1ed..32f2f564fc53df987579bf2946eb5765519157c6 100644 --- a/crates/zeta_cli/src/predict.rs +++ b/crates/zeta_cli/src/predict.rs @@ -1,7 +1,10 @@ use crate::PromptFormat; use crate::example::{ActualExcerpt, ExpectedExcerpt, NamedExample}; use crate::headless::ZetaCliAppState; -use crate::paths::{CACHE_DIR, LOGS_DIR}; +use crate::paths::{ + CACHE_DIR, LOGS_DIR, LOGS_PREDICTION_PROMPT, LOGS_PREDICTION_RESPONSE, LOGS_SEARCH_PROMPT, + LOGS_SEARCH_QUERIES, +}; use ::serde::Serialize; use anyhow::{Result, anyhow}; use clap::Args; @@ -61,6 +64,15 @@ pub async fn run_zeta2_predict( .await .unwrap(); result.write(args.format, std::io::stdout()).unwrap(); + + println!("## Logs\n"); + println!("Search prompt: {}", LOGS_SEARCH_PROMPT.display()); + println!("Search queries: {}", LOGS_SEARCH_QUERIES.display()); + println!("Prediction prompt: {}", LOGS_PREDICTION_PROMPT.display()); + println!( + "Prediction response: {}", + LOGS_PREDICTION_RESPONSE.display() + ); } thread_local! { @@ -147,12 +159,12 @@ pub async fn zeta2_predict( match event { zeta2::ZetaDebugInfo::ContextRetrievalStarted(info) => { start_time = Some(info.timestamp); - fs::write(LOGS_DIR.join("search_prompt.md"), &info.search_prompt)?; + fs::write(&*LOGS_SEARCH_PROMPT, &info.search_prompt)?; } zeta2::ZetaDebugInfo::SearchQueriesGenerated(info) => { search_queries_generated_at = Some(info.timestamp); fs::write( - LOGS_DIR.join("search_queries.json"), + &*LOGS_SEARCH_QUERIES, serde_json::to_string_pretty(&info.search_queries).unwrap(), )?; } @@ -164,7 +176,7 @@ pub async fn zeta2_predict( let prediction_started_at = Instant::now(); start_time.get_or_insert(prediction_started_at); fs::write( - LOGS_DIR.join("prediction_prompt.md"), + &*LOGS_PREDICTION_PROMPT, &request.local_prompt.unwrap_or_default(), )?; @@ -198,7 +210,7 @@ pub async fn zeta2_predict( let response = request.response_rx.await?.0.map_err(|err| anyhow!(err))?; let response = zeta2::text_from_response(response).unwrap_or_default(); let prediction_finished_at = Instant::now(); - fs::write(LOGS_DIR.join("prediction_response.md"), &response)?; + fs::write(&*LOGS_PREDICTION_RESPONSE, &response)?; let mut result = result.lock().unwrap();