diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-15 02:32:52 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-15 02:32:52 +0300 |
| commit | 88370e1516182ab519d22a12fa82d5780a40fee6 (patch) | |
| tree | b07be9b77abe14cdd3c1ff0e9acc1268729d8723 /src/api/schema/panes.rs | |
| parent | 5d24d0d214d05858e344a9e15a63856dc1328eae (diff) | |
feat: add isolated pane graphics streaming
Diffstat (limited to 'src/api/schema/panes.rs')
| -rw-r--r-- | src/api/schema/panes.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/api/schema/panes.rs b/src/api/schema/panes.rs index 2e37e734..097b6366 100644 --- a/src/api/schema/panes.rs +++ b/src/api/schema/panes.rs @@ -2,6 +2,9 @@ use std::collections::HashMap; use serde::{Deserialize, Serialize}; +pub(crate) const PANE_GRAPHICS_SET_MAX_BYTES: usize = 512 * 1024; +pub(crate) const PANE_GRAPHICS_STREAM_MAX_BYTES: usize = 16 * 1024 * 1024; + use super::agents::AgentSessionInfo; use super::common::{AgentStatus, PaneAgentState, ReadFormat, ReadSource, SplitDirection}; @@ -257,6 +260,58 @@ pub struct PaneReadParams { pub strip_ansi: bool, } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum PaneGraphicsFormat { + Png, + Rgb, + Rgba, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] +pub struct PaneGraphicsSetParams { + pub pane_id: String, + #[serde(skip)] + #[schemars(skip)] + pub owner: String, + pub format: PaneGraphicsFormat, + pub image_width: u32, + pub image_height: u32, + #[serde(skip)] + pub data: Option<Vec<u8>>, + #[serde(default)] + pub data_base64: String, + #[serde(default)] + pub placement: PaneGraphicsPlacementParams, +} + +#[derive( + Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default, +)] +pub struct PaneGraphicsPlacementParams { + #[serde(default)] + pub viewport_col: i32, + #[serde(default)] + pub viewport_row: i32, + #[serde(default)] + pub grid_cols: u32, + #[serde(default)] + pub grid_rows: u32, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] +pub struct PaneGraphicsClearParams { + pub pane_id: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] +pub struct PaneGraphicsStreamParams { + pub pane_id: String, + #[serde(skip)] + #[schemars(skip)] + pub owner: String, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct PaneReportAgentParams { pub pane_id: String, |
