dk-protocol 0.2.83

dkod gRPC protocol definitions and server/client implementations
Documentation
use dk_protocol::{ApproveRequest, RecordReviewRequest, RecordReviewResponse, ReviewSnapshot};

#[test]
fn approve_request_has_override_reason_and_snapshot() {
    let req = ApproveRequest {
        session_id: "s1".into(),
        override_reason: Some("Exceeded 3 review fix rounds; findings: X,Y".into()),
        review_snapshot: Some(ReviewSnapshot {
            score: Some(2),
            threshold: Some(4),
            findings_count: 3,
            provider: "openrouter".into(),
            model: "anthropic/claude-opus-4.7".into(),
        }),
    };
    assert_eq!(
        req.override_reason.as_deref(),
        Some("Exceeded 3 review fix rounds; findings: X,Y")
    );
    assert_eq!(req.review_snapshot.as_ref().unwrap().score, Some(2));
}

#[test]
fn record_review_request_shape() {
    let req = RecordReviewRequest {
        session_id: "s1".into(),
        changeset_id: "c1".into(),
        tier: "deep".into(),
        score: Some(4),
        summary: Some("LGTM with minor warnings".into()),
        findings: vec![],
        provider: "anthropic".into(),
        model: "claude-opus-4-7".into(),
        duration_ms: 12345,
    };
    assert_eq!(req.tier, "deep");
    assert_eq!(req.score, Some(4));
    assert_eq!(req.duration_ms, 12345);
}

#[test]
fn record_review_response_shape() {
    let resp = RecordReviewResponse {
        review_id: "r1".into(),
        accepted: true,
    };
    assert!(resp.accepted);
}