use serde::{Deserialize, Serialize};
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct ProcessExecutionResult {
pub exit_code: i32,
pub stdout: String,
pub stderr: String,
}
impl From<crate::executor::ProcessOutput> for ProcessExecutionResult {
fn from(output: crate::executor::ProcessOutput) -> Self {
Self {
exit_code: output.exit_code(),
stdout: output.stdout,
stderr: output.stderr,
}
}
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub enum CommitEvent {
GenerationStarted,
DiffPrepared {
empty: bool,
content_id_sha256: String,
},
DiffFailed {
error: String,
},
DiffInvalidated {
reason: String,
},
PromptPrepared {
attempt: u32,
},
AgentInvoked {
attempt: u32,
},
CommitXmlExtracted {
attempt: u32,
},
CommitXmlMissing {
attempt: u32,
},
CommitXmlValidated {
message: String,
attempt: u32,
#[serde(default)]
files: Vec<String>,
#[serde(default)]
excluded_files: Vec<crate::reducer::state::pipeline::ExcludedFile>,
},
CommitXmlValidationFailed {
reason: String,
attempt: u32,
},
CommitXmlArchived {
attempt: u32,
},
CommitXmlCleaned {
attempt: u32,
},
MessageGenerated {
message: String,
attempt: u32,
},
MessageValidationFailed {
reason: String,
attempt: u32,
},
Created {
hash: String,
message: String,
},
GitAuthConfigured,
PushExecuted {
remote: String,
branch: String,
commit_sha: String,
result: ProcessExecutionResult,
},
PushCompleted {
remote: String,
branch: String,
commit_sha: String,
},
PushFailed {
remote: String,
branch: String,
error: String,
},
PullRequestCreated { url: String, number: u32 },
PullRequestFailed { error: String },
GenerationFailed {
reason: String,
},
Skipped {
reason: String,
},
PreTerminationSafetyCheckPassed,
PreTerminationUncommittedChangesDetected {
file_count: usize,
},
ResidualFilesFound {
files: Vec<String>,
pass: u8,
},
ResidualFilesNone,
}