decthings_api/client/rpc/terminal/
request.rs

1use crate::client::rpc::ExecutionLocationProvider;
2use serde::Serialize;
3
4#[derive(Debug, Clone, Serialize)]
5#[serde(rename_all = "camelCase")]
6pub struct FilesystemAccess<'a> {
7    pub model_id: &'a str,
8}
9
10#[derive(Debug, Clone, Serialize)]
11#[serde(rename_all = "camelCase")]
12pub struct TerminalOptions<'a> {
13    /// Adds filesystem access for additional models. Useful for copying files between models for example.
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub add_filesystem_access: Option<&'a [FilesystemAccess<'a>]>,
16    /// Will automatically terminate the session if no input is provided for this amount of time. Default: 1800.
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub terminate_after_inactive_seconds: Option<u32>,
19    /// Terminal columns.
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub cols: Option<u16>,
22    /// Terminal rows.
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub rows: Option<u16>,
25}
26
27#[derive(Debug, Clone, Serialize)]
28#[serde(rename_all = "camelCase")]
29pub struct LaunchTerminalSessionParams<'a> {
30    /// The model's id.
31    pub model_id: &'a str,
32    /// Which launcher to use for running the command.
33    pub execution_location: ExecutionLocationProvider<'a>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub options: Option<TerminalOptions<'a>>,
36    /// If true, immediately subscribes you to events "data" and "exit" for the terminal. Default: true.
37    #[cfg(feature = "events")]
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub subscribe_to_events: Option<bool>,
40}
41
42#[derive(Debug, Clone, Serialize)]
43#[serde(rename_all = "camelCase")]
44pub struct TerminateTerminalSessionParams<'a> {
45    /// The terminal session's id.
46    pub terminal_session_id: &'a str,
47}
48
49#[derive(Debug, Clone, Serialize)]
50#[serde(rename_all = "camelCase")]
51pub struct GetTerminalSessionsParams<'a, S: AsRef<str>> {
52    /// Which sessions to fetch. If unspecified, all running terminals will be fetched.
53    #[serde(serialize_with = "super::super::serialize_option_asref_str_seq")]
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub terminal_session_ids: Option<&'a [S]>,
56}
57
58#[derive(Debug, Clone, Serialize)]
59#[serde(rename_all = "camelCase")]
60pub struct WriteToTerminalSessionParams<'a, T: AsRef<[u8]>> {
61    /// The terminal session's id.
62    pub terminal_session_id: &'a str,
63    #[serde(skip_serializing)]
64    pub data: T,
65}
66
67#[derive(Debug, Clone, Serialize)]
68#[serde(rename_all = "camelCase")]
69pub struct TerminalSessionSize {
70    pub cols: u16,
71    pub rows: u16,
72}
73
74#[derive(Debug, Clone, Serialize)]
75#[serde(rename_all = "camelCase")]
76pub struct ResizeTerminalSessionParams<'a> {
77    /// The terminal session's id.
78    pub terminal_session_id: &'a str,
79    /// New size to set.
80    pub size: TerminalSessionSize,
81}
82
83#[derive(Debug, Clone, Serialize)]
84#[serde(rename_all = "camelCase")]
85pub struct AddFilesystemAccessForTerminalSessionParams<'a> {
86    /// The terminal session's id.
87    pub terminal_session_id: &'a str,
88    /// Identifier of the model to add access to.
89    pub model_id: &'a str,
90}
91
92#[cfg(feature = "events")]
93#[derive(Debug, Clone, Serialize)]
94#[serde(rename_all = "camelCase")]
95pub struct TerminalSubscribeToEventsParams<'a> {
96    /// The terminal session's id.
97    pub terminal_session_id: &'a str,
98}
99
100#[cfg(feature = "events")]
101#[derive(Debug, Clone, Serialize)]
102#[serde(rename_all = "camelCase")]
103pub struct TerminalUnsubscribeFromEventsParams<'a> {
104    /// The terminal session's id.
105    pub terminal_session_id: &'a str,
106}