Skip to main content

dk_runner/steps/agent_review/
provider.rs

1use 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}