Skip to main content

detrix_rs/
generated.rs

1//! Generated types from OpenAPI specification.
2//!
3//! This file is auto-generated. Do NOT edit manually.
4//!
5//! To regenerate: cd clients && task generate-rust-types
6
7#![allow(clippy::all)]
8#![allow(unused_imports)]
9
10use serde::{Deserialize, Serialize};
11
12/// Error types.
13pub mod error {
14    /// Error from a `TryFrom` or `FromStr` implementation.
15    pub struct ConversionError(::std::borrow::Cow<'static, str>);
16    impl ::std::error::Error for ConversionError {}
17    impl ::std::fmt::Display for ConversionError {
18        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> {
19            ::std::fmt::Display::fmt(&self.0, f)
20        }
21    }
22    impl ::std::fmt::Debug for ConversionError {
23        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> {
24            ::std::fmt::Debug::fmt(&self.0, f)
25        }
26    }
27    impl From<&'static str> for ConversionError {
28        fn from(value: &'static str) -> Self {
29            Self(value.into())
30        }
31    }
32    impl From<String> for ConversionError {
33        fn from(value: String) -> Self {
34            Self(value.into())
35        }
36    }
37}
38/**Client state machine state:
39- **sleeping**: Initial/inactive state. Control plane running, debugger not started.
40- **waking**: Transitional state during wake operation.
41- **awake**: Active state. Debugger listening, registered with daemon.
42*/
43///
44/// <details><summary>JSON schema</summary>
45///
46/// ```json
47///{
48///  "description": "Client state machine state:\n- **sleeping**: Initial/inactive state. Control plane running, debugger not started.\n- **waking**: Transitional state during wake operation.\n- **awake**: Active state. Debugger listening, registered with daemon.\n",
49///  "type": "string",
50///  "enum": [
51///    "sleeping",
52///    "waking",
53///    "awake"
54///  ]
55///}
56/// ```
57/// </details>
58#[derive(
59    ::serde::Deserialize,
60    ::serde::Serialize,
61    Clone,
62    Copy,
63    Debug,
64    Eq,
65    Hash,
66    Ord,
67    PartialEq,
68    PartialOrd,
69)]
70pub enum ClientState {
71    #[serde(rename = "sleeping")]
72    Sleeping,
73    #[serde(rename = "waking")]
74    Waking,
75    #[serde(rename = "awake")]
76    Awake,
77}
78impl ::std::convert::From<&Self> for ClientState {
79    fn from(value: &ClientState) -> Self {
80        value.clone()
81    }
82}
83impl ::std::fmt::Display for ClientState {
84    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
85        match *self {
86            Self::Sleeping => f.write_str("sleeping"),
87            Self::Waking => f.write_str("waking"),
88            Self::Awake => f.write_str("awake"),
89        }
90    }
91}
92impl ::std::str::FromStr for ClientState {
93    type Err = self::error::ConversionError;
94    fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
95        match value {
96            "sleeping" => Ok(Self::Sleeping),
97            "waking" => Ok(Self::Waking),
98            "awake" => Ok(Self::Awake),
99            _ => Err("invalid value".into()),
100        }
101    }
102}
103impl ::std::convert::TryFrom<&str> for ClientState {
104    type Error = self::error::ConversionError;
105    fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
106        value.parse()
107    }
108}
109impl ::std::convert::TryFrom<&::std::string::String> for ClientState {
110    type Error = self::error::ConversionError;
111    fn try_from(
112        value: &::std::string::String,
113    ) -> ::std::result::Result<Self, self::error::ConversionError> {
114        value.parse()
115    }
116}
117impl ::std::convert::TryFrom<::std::string::String> for ClientState {
118    type Error = self::error::ConversionError;
119    fn try_from(
120        value: ::std::string::String,
121    ) -> ::std::result::Result<Self, self::error::ConversionError> {
122        value.parse()
123    }
124}
125///Daemon discovery response (no auth required)
126///
127/// <details><summary>JSON schema</summary>
128///
129/// ```json
130///{
131///  "description": "Daemon discovery response (no auth required)",
132///  "type": "object",
133///  "required": [
134///    "daemon_url",
135///    "name"
136///  ],
137///  "properties": {
138///    "control_plane_url": {
139///      "description": "Daemon-visible URL of this app's control plane.\nMay differ from the user-visible URL in Docker/cloud deployments where\nthe bind address (0.0.0.0) differs from the routable hostname.\nThe MCP bridge uses this URL (instead of the user-provided app_url)\nwhen forwarding wake requests to the daemon, so the daemon can reach\nthe app across network boundaries (e.g. http://order-service:8091).\nPresent only when the client knows its routable hostname (advertise_host\nor non-bind-all control_host).\n",
140///      "type": "string",
141///      "example": "http://order-service:8091",
142///      "nullable": true
143///    },
144///    "daemon_url": {
145///      "description": "External daemon URL (daemon_advertise_url if set, else daemon_url).\nUsed by MCP bridge to discover which daemon to connect to.\n",
146///      "type": "string",
147///      "example": "http://localhost:8095"
148///    },
149///    "name": {
150///      "description": "Connection name for this client",
151///      "type": "string",
152///      "example": "order-service"
153///    }
154///  },
155///  "example": {
156///    "control_plane_url": "http://order-service:8091",
157///    "daemon_url": "http://localhost:8095",
158///    "name": "order-service"
159///  }
160///}
161/// ```
162/// </details>
163#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
164pub struct DiscoverResponse {
165    /**Daemon-visible URL of this app's control plane.
166    May differ from the user-visible URL in Docker/cloud deployments where
167    the bind address (0.0.0.0) differs from the routable hostname.
168    The MCP bridge uses this URL (instead of the user-provided app_url)
169    when forwarding wake requests to the daemon, so the daemon can reach
170    the app across network boundaries (e.g. http://order-service:8091).
171    Present only when the client knows its routable hostname (advertise_host
172    or non-bind-all control_host).
173    */
174    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
175    pub control_plane_url: ::std::option::Option<::std::string::String>,
176    /**External daemon URL (daemon_advertise_url if set, else daemon_url).
177    Used by MCP bridge to discover which daemon to connect to.
178    */
179    pub daemon_url: ::std::string::String,
180    ///Connection name for this client
181    pub name: ::std::string::String,
182}
183impl ::std::convert::From<&DiscoverResponse> for DiscoverResponse {
184    fn from(value: &DiscoverResponse) -> Self {
185        value.clone()
186    }
187}
188///Error response
189///
190/// <details><summary>JSON schema</summary>
191///
192/// ```json
193///{
194///  "description": "Error response",
195///  "type": "object",
196///  "required": [
197///    "error"
198///  ],
199///  "properties": {
200///    "error": {
201///      "description": "Error message",
202///      "type": "string",
203///      "example": "Daemon not reachable at http://127.0.0.1:8090"
204///    }
205///  }
206///}
207/// ```
208/// </details>
209#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
210pub struct ErrorResponse {
211    ///Error message
212    pub error: ::std::string::String,
213}
214impl ::std::convert::From<&ErrorResponse> for ErrorResponse {
215    fn from(value: &ErrorResponse) -> Self {
216        value.clone()
217    }
218}
219///Health check response
220///
221/// <details><summary>JSON schema</summary>
222///
223/// ```json
224///{
225///  "description": "Health check response",
226///  "type": "object",
227///  "required": [
228///    "service",
229///    "status"
230///  ],
231///  "properties": {
232///    "service": {
233///      "description": "Service identifier",
234///      "type": "string",
235///      "enum": [
236///        "detrix-client"
237///      ]
238///    },
239///    "status": {
240///      "description": "Health status (always \"ok\" if the control plane is running)",
241///      "type": "string",
242///      "enum": [
243///        "ok"
244///      ]
245///    }
246///  },
247///  "example": {
248///    "service": "detrix-client",
249///    "status": "ok"
250///  }
251///}
252/// ```
253/// </details>
254#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
255pub struct HealthResponse {
256    ///Service identifier
257    pub service: HealthResponseService,
258    ///Health status (always "ok" if the control plane is running)
259    pub status: HealthResponseStatus,
260}
261impl ::std::convert::From<&HealthResponse> for HealthResponse {
262    fn from(value: &HealthResponse) -> Self {
263        value.clone()
264    }
265}
266///Service identifier
267///
268/// <details><summary>JSON schema</summary>
269///
270/// ```json
271///{
272///  "description": "Service identifier",
273///  "type": "string",
274///  "enum": [
275///    "detrix-client"
276///  ]
277///}
278/// ```
279/// </details>
280#[derive(
281    ::serde::Deserialize,
282    ::serde::Serialize,
283    Clone,
284    Copy,
285    Debug,
286    Eq,
287    Hash,
288    Ord,
289    PartialEq,
290    PartialOrd,
291)]
292pub enum HealthResponseService {
293    #[serde(rename = "detrix-client")]
294    DetrixClient,
295}
296impl ::std::convert::From<&Self> for HealthResponseService {
297    fn from(value: &HealthResponseService) -> Self {
298        value.clone()
299    }
300}
301impl ::std::fmt::Display for HealthResponseService {
302    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
303        match *self {
304            Self::DetrixClient => f.write_str("detrix-client"),
305        }
306    }
307}
308impl ::std::str::FromStr for HealthResponseService {
309    type Err = self::error::ConversionError;
310    fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
311        match value {
312            "detrix-client" => Ok(Self::DetrixClient),
313            _ => Err("invalid value".into()),
314        }
315    }
316}
317impl ::std::convert::TryFrom<&str> for HealthResponseService {
318    type Error = self::error::ConversionError;
319    fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
320        value.parse()
321    }
322}
323impl ::std::convert::TryFrom<&::std::string::String> for HealthResponseService {
324    type Error = self::error::ConversionError;
325    fn try_from(
326        value: &::std::string::String,
327    ) -> ::std::result::Result<Self, self::error::ConversionError> {
328        value.parse()
329    }
330}
331impl ::std::convert::TryFrom<::std::string::String> for HealthResponseService {
332    type Error = self::error::ConversionError;
333    fn try_from(
334        value: ::std::string::String,
335    ) -> ::std::result::Result<Self, self::error::ConversionError> {
336        value.parse()
337    }
338}
339///Health status (always "ok" if the control plane is running)
340///
341/// <details><summary>JSON schema</summary>
342///
343/// ```json
344///{
345///  "description": "Health status (always \"ok\" if the control plane is running)",
346///  "type": "string",
347///  "enum": [
348///    "ok"
349///  ]
350///}
351/// ```
352/// </details>
353#[derive(
354    ::serde::Deserialize,
355    ::serde::Serialize,
356    Clone,
357    Copy,
358    Debug,
359    Eq,
360    Hash,
361    Ord,
362    PartialEq,
363    PartialOrd,
364)]
365pub enum HealthResponseStatus {
366    #[serde(rename = "ok")]
367    Ok,
368}
369impl ::std::convert::From<&Self> for HealthResponseStatus {
370    fn from(value: &HealthResponseStatus) -> Self {
371        value.clone()
372    }
373}
374impl ::std::fmt::Display for HealthResponseStatus {
375    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
376        match *self {
377            Self::Ok => f.write_str("ok"),
378        }
379    }
380}
381impl ::std::str::FromStr for HealthResponseStatus {
382    type Err = self::error::ConversionError;
383    fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
384        match value {
385            "ok" => Ok(Self::Ok),
386            _ => Err("invalid value".into()),
387        }
388    }
389}
390impl ::std::convert::TryFrom<&str> for HealthResponseStatus {
391    type Error = self::error::ConversionError;
392    fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
393        value.parse()
394    }
395}
396impl ::std::convert::TryFrom<&::std::string::String> for HealthResponseStatus {
397    type Error = self::error::ConversionError;
398    fn try_from(
399        value: &::std::string::String,
400    ) -> ::std::result::Result<Self, self::error::ConversionError> {
401        value.parse()
402    }
403}
404impl ::std::convert::TryFrom<::std::string::String> for HealthResponseStatus {
405    type Error = self::error::ConversionError;
406    fn try_from(
407        value: ::std::string::String,
408    ) -> ::std::result::Result<Self, self::error::ConversionError> {
409        value.parse()
410    }
411}
412///Static client process information
413///
414/// <details><summary>JSON schema</summary>
415///
416/// ```json
417///{
418///  "description": "Static client process information",
419///  "type": "object",
420///  "required": [
421///    "name",
422///    "pid"
423///  ],
424///  "properties": {
425///    "go_version": {
426///      "description": "Go version (Go client only)",
427///      "type": "string",
428///      "example": "go1.22.0"
429///    },
430///    "name": {
431///      "description": "Connection name for this client",
432///      "type": "string",
433///      "example": "my-service-12345"
434///    },
435///    "pid": {
436///      "description": "Process ID of the client",
437///      "type": "integer",
438///      "format": "int64",
439///      "example": 12345
440///    },
441///    "python_executable": {
442///      "description": "Python executable path (Python client only)",
443///      "type": "string",
444///      "example": "/usr/bin/python3"
445///    },
446///    "python_version": {
447///      "description": "Python version (Python client only)",
448///      "type": "string",
449///      "example": "3.12.0 (main, Oct  2 2023, 00:00:00)"
450///    },
451///    "rust_version": {
452///      "description": "Rust version (Rust client only)",
453///      "type": "string",
454///      "example": "1.75.0"
455///    }
456///  },
457///  "example": {
458///    "name": "my-service-12345",
459///    "pid": 12345,
460///    "python_executable": "/usr/bin/python3",
461///    "python_version": "3.12.0"
462///  }
463///}
464/// ```
465/// </details>
466#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
467pub struct InfoResponse {
468    ///Go version (Go client only)
469    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
470    pub go_version: ::std::option::Option<::std::string::String>,
471    ///Connection name for this client
472    pub name: ::std::string::String,
473    ///Process ID of the client
474    pub pid: i64,
475    ///Python executable path (Python client only)
476    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
477    pub python_executable: ::std::option::Option<::std::string::String>,
478    ///Python version (Python client only)
479    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
480    pub python_version: ::std::option::Option<::std::string::String>,
481    ///Rust version (Rust client only)
482    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
483    pub rust_version: ::std::option::Option<::std::string::String>,
484}
485impl ::std::convert::From<&InfoResponse> for InfoResponse {
486    fn from(value: &InfoResponse) -> Self {
487        value.clone()
488    }
489}
490///Request body for /detrix/files/read
491///
492/// <details><summary>JSON schema</summary>
493///
494/// ```json
495///{
496///  "description": "Request body for /detrix/files/read",
497///  "type": "object",
498///  "required": [
499///    "path"
500///  ],
501///  "properties": {
502///    "commit": {
503///      "description": "Git commit SHA for pinned source fetching (optional).\nIf provided, the file is fetched from the specified git commit.\n",
504///      "type": "string",
505///      "example": "abc123def456",
506///      "nullable": true
507///    },
508///    "path": {
509///      "description": "File path to read. Can be absolute or relative.\nRelative paths are resolved against the workspace root.\nMust not escape the workspace root.\n",
510///      "type": "string",
511///      "example": "/src/examples/docker-demo/client-app/main.go"
512///    },
513///    "workspace_root": {
514///      "description": "Workspace root hint from the daemon (optional).\nOverrides the client's own workspace root for path resolution.\n",
515///      "type": "string",
516///      "example": "/src/examples/docker-demo/client-app",
517///      "nullable": true
518///    }
519///  }
520///}
521/// ```
522/// </details>
523#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
524pub struct ReadFileRequest {
525    /**Git commit SHA for pinned source fetching (optional).
526    If provided, the file is fetched from the specified git commit.
527    */
528    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
529    pub commit: ::std::option::Option<::std::string::String>,
530    /**File path to read. Can be absolute or relative.
531    Relative paths are resolved against the workspace root.
532    Must not escape the workspace root.
533    */
534    pub path: ::std::string::String,
535    /**Workspace root hint from the daemon (optional).
536    Overrides the client's own workspace root for path resolution.
537    */
538    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
539    pub workspace_root: ::std::option::Option<::std::string::String>,
540}
541impl ::std::convert::From<&ReadFileRequest> for ReadFileRequest {
542    fn from(value: &ReadFileRequest) -> Self {
543        value.clone()
544    }
545}
546///Response from sleep operation
547///
548/// <details><summary>JSON schema</summary>
549///
550/// ```json
551///{
552///  "description": "Response from sleep operation",
553///  "type": "object",
554///  "required": [
555///    "status"
556///  ],
557///  "properties": {
558///    "status": {
559///      "description": "\"sleeping\" if the client transitioned from awake to sleeping.\n\"already_sleeping\" if the client was already in sleeping state.\n",
560///      "type": "string",
561///      "enum": [
562///        "sleeping",
563///        "already_sleeping"
564///      ]
565///    }
566///  },
567///  "example": {
568///    "status": "sleeping"
569///  }
570///}
571/// ```
572/// </details>
573#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
574pub struct SleepResponse {
575    /**"sleeping" if the client transitioned from awake to sleeping.
576    "already_sleeping" if the client was already in sleeping state.
577    */
578    pub status: SleepResponseStatus,
579}
580impl ::std::convert::From<&SleepResponse> for SleepResponse {
581    fn from(value: &SleepResponse) -> Self {
582        value.clone()
583    }
584}
585/**"sleeping" if the client transitioned from awake to sleeping.
586"already_sleeping" if the client was already in sleeping state.
587*/
588///
589/// <details><summary>JSON schema</summary>
590///
591/// ```json
592///{
593///  "description": "\"sleeping\" if the client transitioned from awake to sleeping.\n\"already_sleeping\" if the client was already in sleeping state.\n",
594///  "type": "string",
595///  "enum": [
596///    "sleeping",
597///    "already_sleeping"
598///  ]
599///}
600/// ```
601/// </details>
602#[derive(
603    ::serde::Deserialize,
604    ::serde::Serialize,
605    Clone,
606    Copy,
607    Debug,
608    Eq,
609    Hash,
610    Ord,
611    PartialEq,
612    PartialOrd,
613)]
614pub enum SleepResponseStatus {
615    #[serde(rename = "sleeping")]
616    Sleeping,
617    #[serde(rename = "already_sleeping")]
618    AlreadySleeping,
619}
620impl ::std::convert::From<&Self> for SleepResponseStatus {
621    fn from(value: &SleepResponseStatus) -> Self {
622        value.clone()
623    }
624}
625impl ::std::fmt::Display for SleepResponseStatus {
626    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
627        match *self {
628            Self::Sleeping => f.write_str("sleeping"),
629            Self::AlreadySleeping => f.write_str("already_sleeping"),
630        }
631    }
632}
633impl ::std::str::FromStr for SleepResponseStatus {
634    type Err = self::error::ConversionError;
635    fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
636        match value {
637            "sleeping" => Ok(Self::Sleeping),
638            "already_sleeping" => Ok(Self::AlreadySleeping),
639            _ => Err("invalid value".into()),
640        }
641    }
642}
643impl ::std::convert::TryFrom<&str> for SleepResponseStatus {
644    type Error = self::error::ConversionError;
645    fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
646        value.parse()
647    }
648}
649impl ::std::convert::TryFrom<&::std::string::String> for SleepResponseStatus {
650    type Error = self::error::ConversionError;
651    fn try_from(
652        value: &::std::string::String,
653    ) -> ::std::result::Result<Self, self::error::ConversionError> {
654        value.parse()
655    }
656}
657impl ::std::convert::TryFrom<::std::string::String> for SleepResponseStatus {
658    type Error = self::error::ConversionError;
659    fn try_from(
660        value: ::std::string::String,
661    ) -> ::std::result::Result<Self, self::error::ConversionError> {
662        value.parse()
663    }
664}
665///Current client status
666///
667/// <details><summary>JSON schema</summary>
668///
669/// ```json
670///{
671///  "description": "Current client status",
672///  "type": "object",
673///  "required": [
674///    "control_host",
675///    "control_port",
676///    "daemon_url",
677///    "debug_port",
678///    "debug_port_active",
679///    "name",
680///    "state"
681///  ],
682///  "properties": {
683///    "connection_id": {
684///      "description": "Connection ID assigned by the daemon upon registration.\nNull if not currently registered (state is \"sleeping\").\n",
685///      "type": "string",
686///      "example": "conn_abc123",
687///      "nullable": true
688///    },
689///    "control_host": {
690///      "description": "Host the control plane is bound to",
691///      "type": "string",
692///      "example": "127.0.0.1"
693///    },
694///    "control_port": {
695///      "description": "Actual port the control plane is listening on.\n0 if the control plane has not been started yet.\n",
696///      "type": "integer",
697///      "format": "int32",
698///      "maximum": 65535.0,
699///      "minimum": 0.0,
700///      "example": 8091
701///    },
702///    "daemon_url": {
703///      "description": "URL of the Detrix daemon this client connects to",
704///      "type": "string",
705///      "example": "http://127.0.0.1:8090"
706///    },
707///    "debug_port": {
708///      "description": "Debug adapter port. 0 if debugger has never been started.\nMay be non-zero even when sleeping due to debugger limitations.\n",
709///      "type": "integer",
710///      "format": "int32",
711///      "maximum": 65535.0,
712///      "minimum": 0.0,
713///      "example": 5678
714///    },
715///    "debug_port_active": {
716///      "description": "True if the debug port is actually open and accepting connections.\nThis may be true even when state is \"sleeping\" because some debuggers\n(e.g., debugpy) cannot stop their listener once started.\n",
717///      "type": "boolean",
718///      "example": true
719///    },
720///    "name": {
721///      "description": "Connection name for this client",
722///      "type": "string",
723///      "example": "my-service-12345"
724///    },
725///    "state": {
726///      "$ref": "#/components/schemas/ClientState"
727///    }
728///  },
729///  "example": {
730///    "connection_id": "conn_abc123",
731///    "control_host": "127.0.0.1",
732///    "control_port": 8091,
733///    "daemon_url": "http://127.0.0.1:8090",
734///    "debug_port": 5678,
735///    "debug_port_active": true,
736///    "name": "my-service-12345",
737///    "state": "awake"
738///  }
739///}
740/// ```
741/// </details>
742#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
743pub struct StatusResponse {
744    /**Connection ID assigned by the daemon upon registration.
745    Null if not currently registered (state is "sleeping").
746    */
747    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
748    pub connection_id: ::std::option::Option<::std::string::String>,
749    ///Host the control plane is bound to
750    pub control_host: ::std::string::String,
751    /**Actual port the control plane is listening on.
752    0 if the control plane has not been started yet.
753    */
754    pub control_port: i32,
755    ///URL of the Detrix daemon this client connects to
756    pub daemon_url: ::std::string::String,
757    /**Debug adapter port. 0 if debugger has never been started.
758    May be non-zero even when sleeping due to debugger limitations.
759    */
760    pub debug_port: i32,
761    /**True if the debug port is actually open and accepting connections.
762    This may be true even when state is "sleeping" because some debuggers
763    (e.g., debugpy) cannot stop their listener once started.
764    */
765    pub debug_port_active: bool,
766    ///Connection name for this client
767    pub name: ::std::string::String,
768    pub state: ClientState,
769}
770impl ::std::convert::From<&StatusResponse> for StatusResponse {
771    fn from(value: &StatusResponse) -> Self {
772        value.clone()
773    }
774}
775///Optional parameters for wake operation
776///
777/// <details><summary>JSON schema</summary>
778///
779/// ```json
780///{
781///  "description": "Optional parameters for wake operation",
782///  "type": "object",
783///  "properties": {
784///    "daemon_url": {
785///      "description": "Override the daemon URL for this wake operation.\nIf not provided, uses the URL configured during init().\n",
786///      "type": "string",
787///      "format": "uri",
788///      "example": "http://192.168.1.100:8090"
789///    }
790///  }
791///}
792/// ```
793/// </details>
794#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
795pub struct WakeRequest {
796    /**Override the daemon URL for this wake operation.
797    If not provided, uses the URL configured during init().
798    */
799    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
800    pub daemon_url: ::std::option::Option<::std::string::String>,
801}
802impl ::std::convert::From<&WakeRequest> for WakeRequest {
803    fn from(value: &WakeRequest) -> Self {
804        value.clone()
805    }
806}
807impl ::std::default::Default for WakeRequest {
808    fn default() -> Self {
809        Self {
810            daemon_url: Default::default(),
811        }
812    }
813}
814///Response from wake operation
815///
816/// <details><summary>JSON schema</summary>
817///
818/// ```json
819///{
820///  "description": "Response from wake operation",
821///  "type": "object",
822///  "required": [
823///    "connection_id",
824///    "debug_port",
825///    "status"
826///  ],
827///  "properties": {
828///    "connection_id": {
829///      "description": "Connection ID assigned by the daemon",
830///      "type": "string",
831///      "example": "conn_abc123"
832///    },
833///    "daemon_url": {
834///      "description": "External URL of the daemon this client registered with.\nSet from daemon's advertise_url returned during registration.\nUsed by MCP bridge for auto-discovery of remote daemons.\n",
835///      "type": "string",
836///      "format": "uri",
837///      "example": "http://localhost:8095"
838///    },
839///    "debug_port": {
840///      "description": "Port the debug adapter is listening on",
841///      "type": "integer",
842///      "format": "int32",
843///      "maximum": 65535.0,
844///      "minimum": 1.0,
845///      "example": 5678
846///    },
847///    "status": {
848///      "description": "\"awake\" if the client transitioned from sleeping to awake.\n\"already_awake\" if the client was already in awake state.\n",
849///      "type": "string",
850///      "enum": [
851///        "awake",
852///        "already_awake"
853///      ]
854///    }
855///  },
856///  "example": {
857///    "connection_id": "conn_abc123",
858///    "daemon_url": "http://localhost:8095",
859///    "debug_port": 5678,
860///    "status": "awake"
861///  }
862///}
863/// ```
864/// </details>
865#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
866pub struct WakeResponse {
867    ///Connection ID assigned by the daemon
868    pub connection_id: ::std::string::String,
869    /**External URL of the daemon this client registered with.
870    Set from daemon's advertise_url returned during registration.
871    Used by MCP bridge for auto-discovery of remote daemons.
872    */
873    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
874    pub daemon_url: ::std::option::Option<::std::string::String>,
875    ///Port the debug adapter is listening on
876    pub debug_port: i32,
877    /**"awake" if the client transitioned from sleeping to awake.
878    "already_awake" if the client was already in awake state.
879    */
880    pub status: WakeResponseStatus,
881}
882impl ::std::convert::From<&WakeResponse> for WakeResponse {
883    fn from(value: &WakeResponse) -> Self {
884        value.clone()
885    }
886}
887/**"awake" if the client transitioned from sleeping to awake.
888"already_awake" if the client was already in awake state.
889*/
890///
891/// <details><summary>JSON schema</summary>
892///
893/// ```json
894///{
895///  "description": "\"awake\" if the client transitioned from sleeping to awake.\n\"already_awake\" if the client was already in awake state.\n",
896///  "type": "string",
897///  "enum": [
898///    "awake",
899///    "already_awake"
900///  ]
901///}
902/// ```
903/// </details>
904#[derive(
905    ::serde::Deserialize,
906    ::serde::Serialize,
907    Clone,
908    Copy,
909    Debug,
910    Eq,
911    Hash,
912    Ord,
913    PartialEq,
914    PartialOrd,
915)]
916pub enum WakeResponseStatus {
917    #[serde(rename = "awake")]
918    Awake,
919    #[serde(rename = "already_awake")]
920    AlreadyAwake,
921}
922impl ::std::convert::From<&Self> for WakeResponseStatus {
923    fn from(value: &WakeResponseStatus) -> Self {
924        value.clone()
925    }
926}
927impl ::std::fmt::Display for WakeResponseStatus {
928    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
929        match *self {
930            Self::Awake => f.write_str("awake"),
931            Self::AlreadyAwake => f.write_str("already_awake"),
932        }
933    }
934}
935impl ::std::str::FromStr for WakeResponseStatus {
936    type Err = self::error::ConversionError;
937    fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
938        match value {
939            "awake" => Ok(Self::Awake),
940            "already_awake" => Ok(Self::AlreadyAwake),
941            _ => Err("invalid value".into()),
942        }
943    }
944}
945impl ::std::convert::TryFrom<&str> for WakeResponseStatus {
946    type Error = self::error::ConversionError;
947    fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
948        value.parse()
949    }
950}
951impl ::std::convert::TryFrom<&::std::string::String> for WakeResponseStatus {
952    type Error = self::error::ConversionError;
953    fn try_from(
954        value: &::std::string::String,
955    ) -> ::std::result::Result<Self, self::error::ConversionError> {
956        value.parse()
957    }
958}
959impl ::std::convert::TryFrom<::std::string::String> for WakeResponseStatus {
960    type Error = self::error::ConversionError;
961    fn try_from(
962        value: ::std::string::String,
963    ) -> ::std::result::Result<Self, self::error::ConversionError> {
964        value.parse()
965    }
966}