Skip to main content

codex_protocol/
network_policy.rs

1use crate::approvals::NetworkApprovalProtocol;
2use codex_network_proxy::NetworkDecisionSource;
3use codex_network_proxy::NetworkPolicyDecision;
4use serde::Deserialize;
5
6#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
7#[serde(rename_all = "camelCase")]
8pub struct NetworkPolicyDecisionPayload {
9    pub decision: NetworkPolicyDecision,
10    pub source: NetworkDecisionSource,
11    #[serde(default)]
12    pub protocol: Option<NetworkApprovalProtocol>,
13    pub host: Option<String>,
14    pub reason: Option<String>,
15    pub port: Option<u16>,
16}
17
18impl NetworkPolicyDecisionPayload {
19    pub fn is_ask_from_decider(&self) -> bool {
20        self.decision == NetworkPolicyDecision::Ask && self.source == NetworkDecisionSource::Decider
21    }
22}