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}