79 lines
2.0 KiB
Rust
79 lines
2.0 KiB
Rust
use clap::{Args, Subcommand, ValueEnum};
|
|
|
|
/// Commands to support third-party agent harnesses running within Oz.
|
|
///
|
|
/// These commands are invoked by external agent harnesses (e.g. Claude Code)
|
|
/// during a cloud agent run to interact with Oz platform APIs.
|
|
#[derive(Debug, Clone, Args)]
|
|
pub struct HarnessSupportArgs {
|
|
/// The run ID to associate with harness-support API calls.
|
|
#[arg(long = "run-id", env = "OZ_RUN_ID")]
|
|
pub run_id: String,
|
|
|
|
#[command(subcommand)]
|
|
pub command: HarnessSupportCommand,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Subcommand)]
|
|
pub enum HarnessSupportCommand {
|
|
/// Verify connectivity by fetching and displaying the current run.
|
|
#[command(hide = true)]
|
|
Ping,
|
|
|
|
/// Report an artifact back to the Oz platform.
|
|
ReportArtifact(ReportArtifactArgs),
|
|
|
|
/// Send a progress notification to the task's originating platform (Slack, Linear, etc.).
|
|
NotifyUser(NotifyUserArgs),
|
|
|
|
/// Report task completion or failure, as well as a summary of the task.
|
|
FinishTask(FinishTaskArgs),
|
|
}
|
|
|
|
#[derive(Debug, Clone, Args)]
|
|
pub struct ReportArtifactArgs {
|
|
#[command(subcommand)]
|
|
pub command: ReportArtifactCommand,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Subcommand)]
|
|
pub enum ReportArtifactCommand {
|
|
/// Report a pull request artifact.
|
|
PullRequest(PullRequestArtifactArgs),
|
|
}
|
|
|
|
#[derive(Debug, Clone, Args)]
|
|
pub struct PullRequestArtifactArgs {
|
|
/// URL of the pull request.
|
|
#[arg(long)]
|
|
pub url: String,
|
|
|
|
/// Branch name associated with the pull request.
|
|
#[arg(long)]
|
|
pub branch: String,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Args)]
|
|
pub struct NotifyUserArgs {
|
|
/// The message to send as a progress update.
|
|
#[arg(long)]
|
|
pub message: String,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
|
|
pub enum TaskStatus {
|
|
Success,
|
|
Failure,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Args)]
|
|
pub struct FinishTaskArgs {
|
|
/// Whether the task succeeded or failed.
|
|
#[arg(long)]
|
|
pub status: TaskStatus,
|
|
|
|
/// A summary of the task outcome.
|
|
#[arg(long)]
|
|
pub summary: String,
|
|
}
|