use crate::error::Result;
use crate::storage::{discover_sessions, initialize_index};
pub fn run(enable_otel: bool) -> Result<()> {
println!(" Discovering Claude Code sessions...\n");
let sessions = discover_sessions()?;
println!(" Found {} session(s)\n", sessions.len());
println!(" Scanned directories:");
println!(" ~/.claude/projects/");
println!(" Building session index...");
let indexed = initialize_index()?;
println!(" Indexed {} session(s)\n", indexed);
println!(" Initialization complete!\n");
println!(" Summary:");
let mut projects: std::collections::HashMap<String, usize> = std::collections::HashMap::new();
for session in &sessions {
*projects.entry(session.project_name.clone()).or_insert(0) += 1;
}
for (project, count) in projects.iter() {
println!(" {} - {} session(s)", project, count);
}
println!("\n Next steps:");
println!(" hindsight list - List all sessions");
println!(" hindsight show <id> - Analyze a session");
println!(" hindsight watch - Monitor current session");
if enable_otel {
let mut config = crate::config::Config::load()?;
config.telemetry.otel_enabled = true;
let port = config.telemetry.otel_port;
config.save()?;
println!("\n OpenTelemetry telemetry enabled (port {}).", port);
println!(" Add these env vars to Claude Code:\n");
println!(" CLAUDE_CODE_ENABLE_TELEMETRY=1");
println!(" OTEL_METRICS_EXPORTER=otlp");
println!(" OTEL_EXPORTER_OTLP_PROTOCOL=http/json");
println!(" OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:{}", port);
println!("\n Then run: hindsight daemon (to start the OTLP receiver)");
}
Ok(())
}