use std::net::SocketAddr;
use std::path::PathBuf;
use std::time::Duration as StdDuration;
use clap::{ArgAction, Args, Subcommand};
use super::orchestrator::OrchestratorLocalArgs;
use super::util::parse_duration_arg;
#[derive(Debug, Args)]
pub(crate) struct SupervisorArgs {
#[command(subcommand)]
pub command: SupervisorCommand,
}
#[derive(Debug, Subcommand)]
pub(crate) enum SupervisorCommand {
Start(SupervisorStartArgs),
Stop(SupervisorStopArgs),
List(SupervisorListArgs),
Inspect(SupervisorInspectArgs),
Pause(SupervisorPauseArgs),
Resume(SupervisorResumeArgs),
Fire(SupervisorFireArgs),
Replay(SupervisorReplayArgs),
Dlq(SupervisorDlqArgs),
Recover(SupervisorRecoverArgs),
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorStartArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
#[arg(long, default_value = "127.0.0.1:8080", value_name = "ADDR")]
pub bind: SocketAddr,
#[arg(long, default_value_t = false, action = ArgAction::SetTrue)]
pub mcp: bool,
#[arg(long = "log-file", value_name = "PATH")]
pub log_file: Option<PathBuf>,
#[arg(long = "wait", value_name = "DURATION", value_parser = parse_duration_arg, default_value = "10s")]
pub wait: StdDuration,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorStopArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorListArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorInspectArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
pub workflow_id: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorPauseArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
pub workflow_id: String,
#[arg(long)]
pub reason: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorResumeArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
pub workflow_id: String,
#[arg(long)]
pub reason: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorFireArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
pub workflow_id: String,
#[arg(long = "payload-json", default_value = "{}", value_name = "JSON")]
pub payload_json: String,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorReplayArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
pub event_id: String,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorDlqArgs {
#[command(subcommand)]
pub command: SupervisorDlqCommand,
}
#[derive(Debug, Subcommand)]
pub(crate) enum SupervisorDlqCommand {
List(SupervisorDlqListArgs),
Replay(SupervisorDlqReplayArgs),
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorDlqListArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorDlqReplayArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
pub entry_id: String,
#[arg(long)]
pub json: bool,
}
#[derive(Debug, Args)]
pub(crate) struct SupervisorRecoverArgs {
#[command(flatten)]
pub local: OrchestratorLocalArgs,
#[arg(long = "envelope-age", value_name = "DURATION", value_parser = parse_duration_arg)]
pub envelope_age: StdDuration,
#[arg(long, default_value_t = false, action = ArgAction::SetTrue)]
pub dry_run: bool,
#[arg(long, default_value_t = false, action = ArgAction::SetTrue)]
pub yes: bool,
#[arg(long)]
pub json: bool,
}