use std::path::PathBuf;
use clap::{Args, Subcommand};
#[derive(Args, Debug, Clone)]
pub struct AprArgs {
#[command(subcommand)]
pub action: AprAction,
}
#[derive(Subcommand, Debug, Clone)]
pub enum AprAction {
Inspect(AprInspectArgs),
Tensors(AprTensorsArgs),
Hex(AprHexArgs),
Tree(AprTreeArgs),
Flow(AprFlowArgs),
Lint(AprLintArgs),
Diff(AprDiffArgs),
Import(AprImportArgs),
Merge(AprMergeArgs),
Rosetta(RosettaArgs),
Canary(AprCanaryArgs),
Golden(AprGoldenArgs),
Validate(AprValidateArgs),
Contract(AprContractArgs),
Family(AprFamilyArgs),
Compare(AprCompareArgs),
Export(AprExportArgs),
F16Audit(AprF16AuditArgs),
Sign(AprSignArgs),
VerifySig(AprVerifySigArgs),
Encrypt(AprEncryptArgs),
Decrypt(AprDecryptArgs),
Quantize(AprQuantizeArgs),
ImportSharded(AprImportShardedArgs),
HeInspect(AprHeInspectArgs),
Profile(AprProfileArgs),
Probe(AprProbeArgs),
Parity(AprParityArgs),
ConfigCheck(AprConfigCheckArgs),
Pull(AprPullArgs),
#[command(name = "ls")]
PullList(AprPullListArgs),
}
#[derive(Args, Debug, Clone)]
pub struct AprInspectArgs {
pub file: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprTensorsArgs {
pub file: PathBuf,
#[arg(long)]
pub stats: bool,
#[arg(long)]
pub filter: Option<String>,
#[arg(long, default_value = "0")]
pub limit: usize,
}
#[derive(Args, Debug, Clone)]
pub struct AprHexArgs {
pub file: PathBuf,
#[arg(long, default_value = "256")]
pub limit: usize,
#[arg(long)]
pub tensor: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprTreeArgs {
pub file: PathBuf,
#[arg(long)]
pub sizes: bool,
#[arg(long)]
pub depth: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub struct AprFlowArgs {
pub file: PathBuf,
#[arg(long)]
pub layer: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub struct AprLintArgs {
pub file: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprDiffArgs {
pub file1: PathBuf,
pub file2: PathBuf,
#[arg(long)]
pub filter: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprImportArgs {
pub source: String,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long)]
pub arch: Option<String>,
#[arg(long)]
pub quantize: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprMergeArgs {
pub files: Vec<PathBuf>,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long, default_value = "average")]
pub strategy: String,
#[arg(long)]
pub weights: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct RosettaArgs {
#[command(subcommand)]
pub action: RosettaAction,
}
#[derive(Subcommand, Debug, Clone)]
pub enum RosettaAction {
Inspect(RosettaInspectArgs),
Convert(RosettaConvertArgs),
Verify(RosettaVerifyArgs),
Diff(RosettaDiffArgs),
Fingerprint(RosettaFingerprintArgs),
}
#[derive(Args, Debug, Clone)]
pub struct RosettaInspectArgs {
pub file: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct RosettaConvertArgs {
pub source: PathBuf,
pub dest: PathBuf,
#[arg(long)]
pub quantize: bool,
#[arg(long)]
pub verify: bool,
}
#[derive(Args, Debug, Clone)]
pub struct RosettaVerifyArgs {
pub file: PathBuf,
#[arg(long, default_value = "1e-5")]
pub tolerance: f32,
}
#[derive(Args, Debug, Clone)]
pub struct RosettaDiffArgs {
pub file1: PathBuf,
pub file2: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct RosettaFingerprintArgs {
pub file: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprCanaryArgs {
pub file: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprGoldenArgs {
pub trace_file: PathBuf,
#[arg(long)]
pub logits: Option<PathBuf>,
#[arg(long)]
pub tolerance: Option<f32>,
}
#[derive(Args, Debug, Clone)]
pub struct AprValidateArgs {
pub file: PathBuf,
#[arg(long)]
pub vocab_size: Option<usize>,
#[arg(long)]
pub hidden_dim: Option<usize>,
}
#[derive(Args, Debug, Clone)]
pub struct AprContractArgs {
pub file: PathBuf,
#[arg(long)]
pub tensor: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprFamilyArgs {
#[command(subcommand)]
pub action: FamilyAction,
}
#[derive(Subcommand, Debug, Clone)]
pub enum FamilyAction {
Identify(AprFamilyIdentifyArgs),
Check(AprFamilyCheckArgs),
}
#[derive(Args, Debug, Clone)]
pub struct AprFamilyIdentifyArgs {
pub file: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprFamilyCheckArgs {
pub file: PathBuf,
pub family: String,
#[arg(long)]
pub size: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprCompareArgs {
pub source: PathBuf,
pub target: PathBuf,
#[arg(long, default_value = "1e-5")]
pub l2_tolerance: f64,
#[arg(long, default_value = "1e-5")]
pub max_tolerance: f64,
}
#[derive(Args, Debug, Clone)]
pub struct AprExportArgs {
pub input: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long, default_value = "safetensors")]
pub format: String,
}
#[derive(Args, Debug, Clone)]
pub struct AprF16AuditArgs {
pub file: PathBuf,
#[arg(long)]
pub verbose: bool,
}
#[derive(Args, Debug, Clone)]
pub struct AprSignArgs {
pub file: PathBuf,
#[arg(long)]
pub key: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprVerifySigArgs {
pub file: PathBuf,
#[arg(long)]
pub pubkey: Option<PathBuf>,
}
#[derive(Args, Debug, Clone)]
pub struct AprEncryptArgs {
pub file: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long)]
pub password: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprDecryptArgs {
pub file: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long)]
pub password: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprQuantizeArgs {
pub file: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long, default_value = "q8_0")]
pub r#type: String,
#[arg(long)]
pub verify: bool,
}
#[derive(Args, Debug, Clone)]
pub struct AprImportShardedArgs {
pub source: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
#[arg(long, default_value = "2")]
pub max_cache_shards: usize,
}
#[derive(Args, Debug, Clone)]
pub struct AprHeInspectArgs {
pub file: PathBuf,
}
#[derive(Args, Debug, Clone)]
pub struct AprProfileArgs {
pub model: PathBuf,
pub audio: PathBuf,
#[arg(long, default_value = "1")]
pub warmup: usize,
#[arg(long, default_value = "3")]
pub runs: usize,
#[arg(long, default_value = "text")]
pub format: String,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(long)]
pub per_token: bool,
#[arg(short, long)]
pub threads: Option<u32>,
#[arg(long)]
pub sweep_threads: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprProbeArgs {
pub model: PathBuf,
pub audio: PathBuf,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(long)]
pub stage: Option<String>,
#[arg(long)]
pub layer: Option<String>,
#[arg(long)]
pub full_tensor: bool,
#[arg(long, default_value = "8")]
pub first_n: usize,
#[arg(long)]
pub tokens: Option<String>,
}
#[derive(Args, Debug, Clone)]
pub struct AprParityArgs {
pub ours: PathBuf,
pub reference: PathBuf,
#[arg(long, default_value = "0.01")]
pub tolerance: f64,
#[arg(long, default_value = "1e-5")]
pub abs_tolerance: f64,
#[arg(long)]
pub stop_first: bool,
}
#[derive(Args, Debug, Clone)]
pub struct AprConfigCheckArgs {
pub model: PathBuf,
#[arg(long)]
pub reference: Option<String>,
#[arg(long)]
pub verbose: bool,
}
#[derive(Args, Debug, Clone)]
pub struct AprPullArgs {
pub model_ref: String,
#[arg(long)]
pub force: bool,
}
#[derive(Args, Debug, Clone)]
pub struct AprPullListArgs {
#[arg(long)]
pub json: bool,
}