dk_runner/steps/agent_review/
provider.rs1use anyhow::Result;
2use crate::findings::{Finding, Suggestion};
3
4#[derive(Debug, Clone)]
5pub struct ReviewRequest {
6 pub diff: String,
7 pub context: Vec<FileContext>,
8 pub language: String,
9 pub intent: String,
10}
11
12#[derive(Debug, Clone)]
13pub struct FileContext {
14 pub path: String,
15 pub content: String,
16}
17
18#[derive(Debug, Clone)]
19pub enum ReviewVerdict {
20 Approve,
21 RequestChanges,
22 Comment,
23}
24
25#[derive(Debug, Clone)]
26pub struct ReviewResponse {
27 pub summary: String,
28 pub findings: Vec<Finding>,
29 pub suggestions: Vec<Suggestion>,
30 pub verdict: ReviewVerdict,
31}
32
33#[async_trait::async_trait]
34pub trait ReviewProvider: Send + Sync {
35 fn name(&self) -> &str;
36 async fn review(&self, request: ReviewRequest) -> Result<ReviewResponse>;
37}