use std::path::PathBuf;
use clap::Args;
use crate::disagg::DisaggregationMode;
#[derive(Args, Clone, Debug)]
pub struct CommonArgs {
#[arg(long, default_value = "dynamo", env = "DYN_NAMESPACE")]
pub namespace: String,
#[arg(long, default_value = "backend", env = "DYN_COMPONENT")]
pub component: String,
#[arg(long, default_value = "generate", env = "DYN_ENDPOINT")]
pub endpoint: String,
#[arg(long, default_value = "chat,completions", env = "DYN_ENDPOINT_TYPES")]
pub endpoint_types: String,
#[arg(long, env = "DYN_CUSTOM_JINJA_TEMPLATE")]
pub custom_jinja_template: Option<PathBuf>,
#[arg(long = "dyn-tool-call-parser", env = "DYN_TOOL_CALL_PARSER")]
pub dyn_tool_call_parser: Option<String>,
#[arg(long = "dyn-reasoning-parser", env = "DYN_REASONING_PARSER")]
pub dyn_reasoning_parser: Option<String>,
#[arg(
long = "exclude-tools-when-tool-choice-none",
env = "DYN_EXCLUDE_TOOLS_WHEN_TOOL_CHOICE_NONE",
default_value_t = true,
action = clap::ArgAction::Set
)]
pub exclude_tools_when_tool_choice_none: bool,
#[arg(
long,
value_enum,
default_value_t = DisaggregationMode::Aggregated,
env = "DYN_DISAGGREGATION_MODE",
)]
pub disaggregation_mode: DisaggregationMode,
#[arg(long, default_value_t = false, env = "DYN_ROUTE_TO_ENCODER")]
pub route_to_encoder: bool,
#[arg(long, default_value_t = false, env = "DYN_ENABLE_RL")]
pub enable_rl: bool,
}