use clap::Args;
use super::{parse_finite_f32, parse_nonzero_usize};
use cqs::store::DeadConfidence;
#[derive(Args, Debug, Clone)]
pub(crate) struct SearchArgs {
pub query: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(short = 't', long, default_value = "0.3", value_parser = parse_finite_f32)]
pub threshold: f32,
#[arg(long, default_value = "0.2", value_parser = parse_finite_f32)]
pub name_boost: f32,
#[arg(short = 'l', long)]
pub lang: Option<String>,
#[arg(long, alias = "chunk-type")]
pub include_type: Option<Vec<String>>,
#[arg(long)]
pub exclude_type: Option<Vec<String>>,
#[arg(short = 'p', long)]
pub path: Option<String>,
#[arg(long)]
pub pattern: Option<String>,
#[arg(long)]
pub name_only: bool,
#[arg(long)]
pub rrf: bool,
#[arg(long)]
pub include_docs: bool,
#[arg(long)]
pub rerank: bool,
#[arg(long)]
pub splade: bool,
#[arg(long, value_parser = parse_finite_f32)]
pub splade_alpha: Option<f32>,
#[arg(long)]
pub no_content: bool,
#[arg(short = 'C', long)]
pub context: Option<usize>,
#[arg(long)]
pub expand: bool,
#[arg(long = "ref")]
pub ref_name: Option<String>,
#[arg(long)]
pub include_refs: bool,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
#[arg(long)]
pub no_stale_check: bool,
#[arg(long)]
pub no_demote: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct GatherArgs {
pub query: String,
#[arg(long, default_value = "1")]
pub expand: usize,
#[arg(long, default_value = "both")]
pub direction: cqs::GatherDirection,
#[arg(short = 'n', long, default_value = "10")]
pub limit: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
#[arg(long = "ref")]
pub ref_name: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ImpactArgs {
pub name: String,
#[arg(long, default_value = "1")]
pub depth: usize,
#[arg(long)]
pub suggest_tests: bool,
#[arg(long)]
pub type_impact: bool,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ScoutArgs {
pub query: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ContextArgs {
pub path: String,
#[arg(long)]
pub summary: bool,
#[arg(long)]
pub compact: bool,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct DeadArgs {
#[arg(long)]
pub include_pub: bool,
#[arg(long, default_value = "low")]
pub min_confidence: DeadConfidence,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct SimilarArgs {
pub name: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(short = 't', long, default_value = "0.3", value_parser = parse_finite_f32)]
pub threshold: f32,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct BlameArgs {
pub name: String,
#[arg(short = 'd', long, default_value = "10")]
pub depth: usize,
#[arg(long)]
pub callers: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct TraceArgs {
pub source: String,
pub target: String,
#[arg(long, default_value = "10", value_parser = clap::value_parser!(u16).range(1..=50))]
pub max_depth: u16,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct CallersArgs {
pub name: String,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct DepsArgs {
pub name: String,
#[arg(long)]
pub reverse: bool,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct TestMapArgs {
pub name: String,
#[arg(long, default_value = "5")]
pub depth: usize,
#[arg(long)]
pub cross_project: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct RelatedArgs {
pub name: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct OnboardArgs {
pub query: String,
#[arg(short = 'd', long, default_value = "3")]
pub depth: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ExplainArgs {
pub name: String,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct WhereArgs {
pub description: String,
#[arg(short = 'n', long, default_value = "3")]
pub limit: usize,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct PlanArgs {
pub description: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct TaskArgs {
pub description: String,
#[arg(short = 'n', long, default_value = "5")]
pub limit: usize,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
#[arg(long)]
pub brief: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ReadArgs {
pub path: String,
#[arg(long)]
pub focus: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct StaleArgs {
#[arg(long)]
pub count_only: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct SuggestArgs {
#[arg(long)]
pub apply: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct DiffArgs {
pub source: String,
pub target: Option<String>,
#[arg(short = 't', long, default_value = "0.95", value_parser = parse_finite_f32)]
pub threshold: f32,
#[arg(short = 'l', long)]
pub lang: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct DriftArgs {
pub reference: String,
#[arg(short = 't', long, default_value = "0.95", value_parser = parse_finite_f32)]
pub threshold: f32,
#[arg(long, default_value = "0.0", value_parser = parse_finite_f32)]
pub min_drift: f32,
#[arg(short = 'l', long)]
pub lang: Option<String>,
#[arg(short = 'n', long)]
pub limit: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ReviewArgs {
#[arg(long)]
pub base: Option<String>,
#[arg(long)]
pub stdin: bool,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct CiArgs {
#[arg(long)]
pub base: Option<String>,
#[arg(long)]
pub stdin: bool,
#[arg(long, default_value = "high")]
pub gate: super::GateThreshold,
#[arg(long, value_parser = parse_nonzero_usize)]
pub tokens: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct ImpactDiffArgs {
#[arg(long)]
pub base: Option<String>,
#[arg(long)]
pub stdin: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct NotesListArgs {
#[arg(long)]
pub warnings: bool,
#[arg(long)]
pub patterns: bool,
}
#[derive(Args, Debug, Clone)]
pub(crate) struct IndexArgs {
#[arg(long)]
pub force: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub no_ignore: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub llm_summaries: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub improve_docs: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub improve_all: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub max_docs: Option<usize>,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub hyde_queries: bool,
#[cfg(feature = "llm-summaries")]
#[arg(long)]
pub max_hyde: Option<usize>,
}