gproxy-protocol 3.0.0-alpha.0

GPROXY v3 protocol model: operation taxonomy, wire kinds, and the OperationSpec registry
Documentation
use serde_json::json;

use crate::openai::generate_content::responses::{ResponseCreateRequest, ResponseObject};

use super::round_trip;

#[test]
fn multi_agent_config_round_trips_request_response_and_absence() {
    let request = round_trip::<ResponseCreateRequest>(json!({
        "multi_agent": {
            "enabled": true,
            "max_concurrent_subagents": 3,
            "future_multi_agent": {"mode": "tree"}
        },
        "request_future": true
    }));
    let config = request.multi_agent.expect("request multi-agent config");
    assert!(config.enabled);
    assert_eq!(config.max_concurrent_subagents, Some(3));
    assert_eq!(config.rest["future_multi_agent"]["mode"], "tree");

    let response = round_trip::<ResponseObject>(json!({
        "id": "resp_1",
        "object": "response",
        "output": [],
        "multi_agent": {
            "enabled": true,
            "max_concurrent_subagents": 3,
            "future_multi_agent": {"mode": "tree"}
        }
    }));
    assert_eq!(response.multi_agent, Some(config));

    let request = round_trip::<ResponseCreateRequest>(json!({}));
    assert!(request.multi_agent.is_none());
    let response = round_trip::<ResponseObject>(json!({
        "id": "resp_2",
        "object": "response",
        "output": []
    }));
    assert!(response.multi_agent.is_none());
}