adk_computer_use/contracts/
lease.rs1use super::action::ExecutionMode;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct ControlLease {
11 pub lease_id: String,
13 pub revision: u64,
15 pub session_id: String,
17 pub principal_id: String,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub agent_id: Option<String>,
22 pub kind: String,
24 pub execution_mode: ExecutionMode,
26 pub state: String,
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub acquired_at: Option<String>,
31 pub expires_at: String,
33 pub action_budget: u32,
35 pub actions_used: u32,
37 #[serde(default)]
39 pub boundaries: LeaseBoundaries,
40}
41
42#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
44#[serde(rename_all = "camelCase")]
45pub struct LeaseBoundaries {
46 #[serde(default)]
48 pub app_ids: Vec<String>,
49 #[serde(default)]
51 pub window_ids: Vec<Value>,
52 #[serde(default)]
54 pub display_ids: Vec<String>,
55}
56
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
59#[serde(rename_all = "camelCase")]
60pub struct TargetReservation {
61 pub reservation_id: String,
63 pub revision: u64,
65 pub intent_id: String,
67 pub session_id: String,
69 pub principal_id: String,
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub execution_group_id: Option<String>,
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub agent_id: Option<String>,
77 pub scope: TargetReservationScope,
79 pub state: String,
81 pub acquired_at: String,
83 pub expires_at: String,
85 #[serde(skip_serializing_if = "Option::is_none")]
87 pub terminal_reason: Option<String>,
88}
89
90#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
92#[serde(rename_all = "camelCase")]
93pub struct TargetReservationScope {
94 pub app_id: String,
96 #[serde(skip_serializing_if = "Option::is_none")]
98 pub window_id: Option<Value>,
99}